সুপ্রিয় বন্ধুরা,
কেমন আছেন সবাই? এস কিউ এল সার্ভার ২০০৮ পর্ব ভিত্তিক টিউটোরিয়ালের ১৩ তম পর্বে আপনাদের স্বাগতম জানাচ্ছি। গত পর্বের টিউন এর ধারাবাহিকতায় আজ আমি ফাংশন নিয়ে আলোচনা করবো। তো চলুন শুরু করিঃ
2. Inline Table-Valued Functions :
এই টাইপের ফাংশনের কাজ হল একটি single query টেবিল আকারে আউটপুট করা। উদাহরন টি দেখলে পানির মত পরিষ্কার হয়ে যাবেঃ
CREATE FUNCTION FnEmpInfo(@ID int)
RETURNS TABLE
AS
RETURN
(
select empCode,empName,gender from EmployeeInfo
Where empCode=@ID
)
GO
এখানে লক্ষ করুন
ফাংশনটির নাম দিয়েছি FnEmpInfo তারপর একটি আর্গুমেন্ট দিয়েছি এভাবেঃ(@ID int)
এরপর ফাংশনটির রিটার্ন টাইপ দিয়েছি টেবিল যা এভাবে লিখতে হবেঃ RETURNS TABLE
এখানে আমি যে কোয়ারি লিখবো তা টেবিল আকারে আমাকে দেখাবে।
AS
এবার সেই টেবিল এ আমি কি দেখবো তা নিচের রিটার্ন স্কোপে লিখে দিয়েছি।(স্কোপ বলতে বোঝায় () এর মাঝের অংশকে। )
RETURN
(
select empCode,empName,gender from EmployeeInfo
Where empCode=@ID
)
GO
এবার আসি নাম করনের সার্থকতা বিচারে, লক্ষ করুন আমি শুধু মাত্র একটি কোয়ারি লিখেছি এবং তা টেবিল এ রিটার্ন করে দিয়েছি।
select * from FnEmpInfo(1001)
Result:
1001 Md. Ruhul Amin m
2. Multi Statement Table valued Function :
নাম দেখেই বোঝা যাচ্ছে এখানে কি করতে হবে। আসলে এখানে আর কিছুই না শুধু মাত্র multi statement এর ব্যবহার করতে হবে এবং তা একটি টেবিল এ রিটার্ন করাতে হবে। চলুন উদাহরনের দ্বারা দেখি বিষয়টাঃ
CREATE FUNCTION FnEmpInfoWithSalary(@ID int)
RETURNS @EmployeeSalaryInfo TABLE
(empID int not null,
empName varchar(20) not null,
Gross money not null,
Basic money not null,
HouseRent money not null
)
AS
BEGIN
INSERT @EmployeeSalaryInfo
select e.empCode,e.empName,d.gross,d.basic,d.houserent from EmployeeInfo e
Inner Join
employeesalary d
on
d.empCode=e.empCode
where d.monthOfSalary='june2012'
and e.empCode=@ID
RETURN
END
এখানে আমি simple একটি জয়েন কোয়ারি লিখেছি যা দুটি টেবিল নিয়ে তৈরি হয়েছে এবং দুটি টেবিল এরই কিছু কিছু কলাম নিয়ে কোয়ারিটি তৈরি করেছি, সব কলাম নেইনি। (আন্ডারলাইন করা অংশগুলি কক্ষ করুন এখানে দুটি টেবিল এর নাম দেয়া হয়েছে। আপনারা যারা আমার পূর্বের টিউন দেখেন নি তারা অবশ্য এই টেবিল দুটি পাবেন না। সুতরাং আমি বলব আপনারা আমার পূর্বের টিউন থেকে টেবিল দুটি collect করে তাতে ডাটা insert করে আজকের কাজ গুলো করলে সহজ হয়ে যাবে।) তো এই কয়েকটি কলামকে আমি নতুন একটি টেবিল এ insert করেছি, যেই টেবিল টার নামঃ @EmployeeSalaryInfo ।
এবার আমি ফাংশনটি কল করছিঃ
select * from FnEmpInfoWithSalary(1003)
আজ এ পর্যন্তই। ভালো থাকুন। টিউন গুলো কেমন হচ্ছে জানাবেন। পরামর্শ দেবেন। ধন্যবাদ।
আমি Shafiq। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 18 টি টিউন ও 44 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
Carry on Brother………