T-SQL এ Functions ব্যবহার করে আপনি ডেটাবেসের মধ্যে একাধিক লজিক্যাল অপারেশন এবং ডেটা প্রক্রিয়াকরণ করতে পারেন। Functions সাধারণত একটি নির্দিষ্ট কাজ সম্পাদন করে এবং একটি ফলাফল (সাধারণত একটি মান) ফেরত দেয়। T-SQL এ দুটি প্রকারের ফাংশন রয়েছে:
- Scalar Functions: একটি একক মান রিটার্ন করে।
- Table-Valued Functions (TVF): একটি টেবিল রিটার্ন করে।
নিচে কিছু উদাহরণসহ T-SQL ফাংশন ব্যাখ্যা করা হলো:
১. Scalar Functions
Scalar Functions শুধুমাত্র একটি একক মান রিটার্ন করে, যা সাধারণত কোনো গাণিতিক বা লজিক্যাল অপারেশন সম্পাদন করে। এগুলি একটি নির্দিষ্ট কলামের উপর কাজ করতে পারে এবং ফলস্বরূপ একটি মান প্রদান করে।
উদাহরণ ১: Simple Scalar Function (যেখানে একটি নাম্বারের গুণফল বের করা হয়)
CREATE FUNCTION MultiplyByTwo (@Number INT)
RETURNS INT
AS
BEGIN
RETURN @Number * 2;
END
এটি একটি সিম্পল Scalar Function যা একটি নাম্বার ইনপুট হিসেবে নেয় এবং তার গুণফল (x2) রিটার্ন করে।
ব্যবহার:
SELECT dbo.MultiplyByTwo(5) AS Result;
এই কোডটি 5 এর গুণফল ২ দিয়ে 10 রিটার্ন করবে।
২. Table-Valued Functions (TVF)
Table-Valued Functions (TVF) একটি টেবিল রিটার্ন করে, যা SELECT কুয়েরি হিসেবে ব্যবহার করা যেতে পারে। এটি ডেটা সেট রিটার্ন করার জন্য ব্যবহৃত হয় এবং জটিল কুয়েরি অপারেশন বা ডেটাবেস থেকে ভিউ হিসাবে কাজ করতে পারে।
উদাহরণ ২: Simple Table-Valued Function (যেখানে একটি নির্দিষ্ট শর্তের ভিত্তিতে রেকর্ড ফেরত দেওয়া হয়)
CREATE FUNCTION GetEmployeesByDepartment (@DepartmentName VARCHAR(100))
RETURNS TABLE
AS
RETURN
(
SELECT EmployeeID, FirstName, LastName
FROM Employees
WHERE Department = @DepartmentName
);
এটি একটি Table-Valued Function যা নির্দিষ্ট একটি ডিপার্টমেন্টের সব কর্মচারীর ডেটা রিটার্ন করে।
ব্যবহার:
SELECT * FROM dbo.GetEmployeesByDepartment('HR');
এই কোডটি Employees টেবিল থেকে HR ডিপার্টমেন্টের সমস্ত কর্মচারীর নাম, প্রথম নাম এবং শেষ নাম রিটার্ন করবে।
৩. Inline Table-Valued Functions (ITVF)
Inline Table-Valued Functions (ITVF) একটি কোয়েরি থেকে সরাসরি টেবিল রিটার্ন করে। ITVF সাধারণত একাধিক স্টেটমেন্টের পরিবর্তে একটি একক SELECT স্টেটমেন্ট রিটার্ন করে।
উদাহরণ ৩: Inline Table-Valued Function (যেখানে কর্মচারীর নাম এবং ডিপার্টমেন্ট নির্ধারণ করা হয়)
CREATE FUNCTION GetEmployeeInfo (@EmployeeID INT)
RETURNS TABLE
AS
RETURN
(
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE EmployeeID = @EmployeeID
);
এটি একটি Inline Table-Valued Function যা নির্দিষ্ট EmployeeID এর জন্য কর্মচারীর নাম এবং ডিপার্টমেন্ট রিটার্ন করে।
ব্যবহার:
SELECT * FROM dbo.GetEmployeeInfo(1001);
এটি Employees টেবিল থেকে EmployeeID 1001 এর কর্মচারীর নাম এবং ডিপার্টমেন্ট রিটার্ন করবে।
৪. নেস্টেড ফাংশন
আপনি এক ফাংশনের ভিতরে অন্য ফাংশনও ব্যবহার করতে পারেন। এটি আরও জটিল এবং কাস্টম লজিক তৈরি করতে সহায়তা করে।
উদাহরণ ৪: Nested Function (যেখানে দুটি ফাংশন একসাথে ব্যবহার করা হয়)
CREATE FUNCTION GetFullName (@FirstName VARCHAR(50), @LastName VARCHAR(50))
RETURNS VARCHAR(100)
AS
BEGIN
RETURN (SELECT CONCAT(@FirstName, ' ', @LastName));
END
এটি FirstName এবং LastName কলামগুলোকে একত্রিত (concat) করে পূর্ণ নাম রিটার্ন করে।
ব্যবহার:
SELECT dbo.GetFullName('John', 'Doe') AS FullName;
এটি 'John Doe' রিটার্ন করবে।
৫. ব্যতিক্রম হ্যান্ডলিং (Error Handling) সহ Function
T-SQL ফাংশনগুলিতে ERROR_HANDLING প্রয়োগ করা সম্ভব নয়, কিন্তু TRY...CATCH ব্লকগুলির মধ্যে ফাংশনগুলি অন্তর্ভুক্ত করতে পারলে আপনি ত্রুটি পরিচালনা করতে পারেন।
উদাহরণ ৫: Function with Error Handling
CREATE FUNCTION SafeDivide (@Numerator INT, @Denominator INT)
RETURNS VARCHAR(50)
AS
BEGIN
BEGIN TRY
RETURN CAST(@Numerator / @Denominator AS VARCHAR);
END TRY
BEGIN CATCH
RETURN 'Error: Division by Zero';
END CATCH
END
এটি একটি SafeDivide ফাংশন, যেখানে Zero দ্বারা ভাগ করার ক্ষেত্রে একটি ত্রুটি রিটার্ন করবে।
ব্যবহার:
SELECT dbo.SafeDivide(10, 0) AS Result;
এটি 'Error: Division by Zero' রিটার্ন করবে যদি ডিভাইডার 0 হয়।
সারাংশ
T-SQL Functions হল এমন ফাংশন যা ডেটাবেসে নির্দিষ্ট কাজগুলি করতে ব্যবহৃত হয়। Scalar Functions একক মান রিটার্ন করে, এবং Table-Valued Functions (TVF) টেবিল রিটার্ন করে। Functions ডেটাবেসে পুনঃব্যবহারযোগ্য লজিক তৈরি করার জন্য গুরুত্বপূর্ণ, এবং এগুলি অনেক জটিল ডেটা প্রক্রিয়াকরণ করতে সাহায্য করে।
T-SQL ফাংশনের বিভিন্ন ধরনের উদাহরণ এবং তাদের ব্যবহার বুঝে আপনি ডেটাবেস অ্যাপ্লিকেশনগুলো আরও কার্যকরী এবং নির্ভুলভাবে পরিচালনা করতে পারবেন।
Read more