এস কিউ এল সার্ভার ২০০৮ শিখুন ধাপে ধাপে [পর্ব-১২] :: ফাংশন

SQL সার্ভার ২০০৮ শিখুন ধাপে ধাপে

সুপ্রিয় বন্ধুরা,

কেমন আছেন সবাই? আশাকরি ভালো। আজ আমি আপনাদের সামনে উপস্থিত হয়েছি ফাংশন নিয়ে আলোচনা করার জন্য।

ফাংশন কি?

  • ফাংশন হচ্ছে প্রী-ডিফাইন্ড ফর্মুলা যা এক বা একের অধিক আরগুমেন্ট ইনপুট হিসেবে নিয়ে প্রসেস করে আউটপুট দেয়। অন্য ভাবে বলা যায়, ফাংশন হল SPECIAL TYPE OF COMMAND যা Single Value Return করে আবার টেবিল রিটার্ন করে।

তিন ধরনের User Defined Function রয়েছে।

  1. Scalar User Defined Function.
  2. In Line Table Valued Function.
  3. Multi Statement Table valued Function.

Scalar User Defined Function: Scalar valued Function  হল একটি user Defined function যা single value return করে। এই ফাংশন টি আর্গুমেন্ট নিতে পারে এবং যে কোন ডাটা টাইপ এর ভেলু return করে যা sql server support করে। তবে নিচের ডাটাটাইপ গুলো বাদেঃ rowversion, text, ntext, image, timestamp, table,  cursor. চলুন একটি উদাহরন দেখিঃ

CREATE FUNCTION whichContinent
(@Country nvarchar(15))
RETURNS varchar(30)
AS
BEGIN
declare @Return varchar(30)
select @return = case @Country
when 'Argentina' then 'South America'
when 'Belgium' then 'Europe'
when 'Brazil' then 'South America'
when 'Canada' then 'North America'
when 'Denmark' then 'Europe'
when 'Finland' then 'Europe'
when 'France' then 'Europe'
else 'Unknown'
end

return @return
end

নিচের ফাংশন টি লক্ষ করুন এখানে @country  নামে একটি আর্গুমেন্ট রয়েছে এবং যার রিটার্ন টাইপ varchar

ফাংশনটি কল করার আগে আমরা একটি টেবিল তৈরি করবো এবং তাতে কিছু ডাটা insert করবো।

Create table customerInfo
(
customerID int primary key not null,
customerName varchar(20) not null,
address varchar(50),
City varchar(30),
country varchar(30)
)
GO

এবার কিছু ডাটা এন্ট্রি করুন।


insert into customerInfo values(1,'Shafiq','aaaaa','aaaaa','Argentina')
insert into customerInfo values(2,'Arif','bbbb','bbbbb','Finland')
insert into customerInfo values(3,'Afridi','ccccc','ccccc','Canada')


এবার চলুন ফাংশনটি কল করি।
select dbo.WhichContinent(customerInfo.country), customerInfo.*
from customerInfo

চমৎকার, দেখুন এখানে ফাংশনটির আর্গুমেন্টে প্যারামিটার হিসেবে customerInfo Table এর country column টি দেখিয়ে দিয়েছি। তারপর customer table এর সব কলামকে select statement এর মধ্যে দিয়ে execute দিয়েছি, এখানে যেটা ঘটলো, প্রথমে ফাংশনটি কল হল, আর কল হওয়ার সময়ে সে প্যারামিটার চাইলো, প্যারামিটারটা সে নিলো customerInfo table এর country কলামটিকে। তারপর ফাংশনটি country কলামের সব ভেলু চেক করে তার লজিকের মধ্যে যেটি মেচিং পেয়েছে সেটিকে তুলে নিয়ে নির্দিষ্ট নামে পরিবর্তন করে দিয়েছে। সাথে সাথে customerInfo table এর সব ভেলু তুলে এনেছে। কারন query এ customerInfo.* দেয়া হয়েছে। তো বন্ধুরা যদি কোন টেবিল এর সকল ভেলু কোন multi statement এ দেখতে চান তবে সেই টেবিল এর নাম লিখে একটি ডট দিয়ে * চিহ্ন দিলেই হয়ে যাবে। আপনাকে কষ্ট করে একটা একটা করে কলামের নাম লিখতে হবে না। আশাকরি বুঝতে পেরেছেন। যদি বুঝতে কোন সমস্যা হয় তবে জানাবেন প্লিজ। আজ এ পর্যন্তই। ভালো থাকুন। আগামী দিন আবার আসবো ফাংশন এর বাকি টিউন নিয়ে। ধন্যবাদ।

Level 2

আমি Shafiq। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 1 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 18 টি টিউন ও 44 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Level 0

ভাই আমার এস কিউ এল সার্ভার ২০০৮ এর ইনষ্টল প্রসেস এবং কার্যকারী ফাইলটি অনেক প্রয়োজন..ভেরিফাইড ডাউনলোড লিংক (টরেন্ট হলেও সমস্যা নাই)..পাইলে অনেক উপকৃত হব .. আপনার সাথে যোগাযোগের উপায় থাকলে এখানে ([email protected]) দিয়েন । 🙂