Scalar এবং Table-Valued Functions তৈরি গাইড ও নোট

Microsoft Technologies - এমএস এসকিউএল সার্ভার (MS SQl Server) - Stored Procedures এবং Functions তৈরি
320

SQL Server এ Functions হল প্রোগ্রামেবল কোড ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে এবং একটি মান বা টেবিল রিটার্ন করে। Scalar Functions এবং Table-Valued Functions (TVFs) দুইটি প্রধান ধরনের ফাংশন SQL Server এ ব্যবহৃত হয়।

  • Scalar Functions একটি একক মান (scalar value) রিটার্ন করে।
  • Table-Valued Functions (TVFs) একটি টেবিল রিটার্ন করে, যা সাধারণত ডেটাবেস থেকে একাধিক রেকর্ড বা রো যোগ করতে ব্যবহৃত হয়।

এই গাইডে Scalar এবং Table-Valued Functions কিভাবে তৈরি করা যায়, তা দেখানো হবে।


1. Scalar Function তৈরি (Creating a Scalar Function)

Scalar Function হল একটি ফাংশন যা একটি একক মান রিটার্ন করে, যেমন একটি সংখ্যা, স্ট্রিং বা ডেট টাইপ। Scalar ফাংশন ব্যবহার করে আপনি একক ইনপুটের উপর কাজ করে আউটপুট রিটার্ন করতে পারেন।

1.1. Scalar Function এর সাধারণ গঠন

CREATE FUNCTION FunctionName (@param1 DataType, @param2 DataType)
RETURNS DataType
AS
BEGIN
    -- Function Logic
    RETURN @param1 + @param2; -- উদাহরণস্বরূপ, দুইটি প্যারামিটারের যোগফল রিটার্ন করা হচ্ছে
END;
GO

1.2. Scalar Function তৈরি করার উদাহরণ

ধরা যাক, আপনি একটি Scalar Function তৈরি করতে চান যেটি দুটি সংখ্যার যোগফল রিটার্ন করবে:

CREATE FUNCTION AddNumbers (@num1 INT, @num2 INT)
RETURNS INT
AS
BEGIN
    RETURN @num1 + @num2;  -- দুটি সংখ্যার যোগফল রিটার্ন
END;
GO

এই ফাংশনটির মাধ্যমে আপনি দুটি পূর্ণসংখ্যার যোগফল পেতে পারেন। এটি INT টাইপের দুটি প্যারামিটার গ্রহণ করবে এবং তাদের যোগফল রিটার্ন করবে।

1.3. Scalar Function কল করা

একটি Scalar Function কল করতে নিম্নলিখিত SQL কোড ব্যবহার করা হয়:

SELECT dbo.AddNumbers(10, 20) AS Result;  -- AddNumbers ফাংশন কল করা হচ্ছে

এটি 30 রিটার্ন করবে, কারণ এটি 10 এবং 20 এর যোগফল রিটার্ন করছে।


2. Table-Valued Function (TVF) তৈরি (Creating a Table-Valued Function)

Table-Valued Function (TVF) এমন একটি ফাংশন যা একটি টেবিল রিটার্ন করে। TVF ব্যবহার করে আপনি একাধিক রেকর্ড (row) এবং কলাম রিটার্ন করতে পারেন, যা একটি সাধারণ SQL query এর মতো ফলাফল প্রদান করে।

TVF দুটি প্রকারের হয়:

  • Inline Table-Valued Function: এই ধরনের TVF শুধুমাত্র একটি SELECT স্টেটমেন্ট রিটার্ন করে।
  • Multistatement Table-Valued Function: এই ধরনের TVF একাধিক স্টেটমেন্ট ব্যবহার করে একটি টেবিল রিটার্ন করে।

2.1. Inline Table-Valued Function (Inline TVF)

Inline TVF একটি সরল SELECT স্টেটমেন্ট থেকে রিটার্ন হয়। এটি কেবল একটি SELECT স্টেটমেন্ট ব্যবহার করে ডেটা রিটার্ন করে।

2.1.1. Inline TVF তৈরি করার উদাহরণ

ধরা যাক, আপনি একটি Inline TVF তৈরি করতে চান যা নির্দিষ্ট বয়সের কর্মচারীদের তালিকা রিটার্ন করবে:

CREATE FUNCTION GetEmployeesByAge (@age INT)
RETURNS TABLE
AS
RETURN
(
    SELECT EmployeeID, FirstName, LastName, Age
    FROM Employee
    WHERE Age = @age
);
GO

এই Inline TVF Employee টেবিল থেকে নির্দিষ্ট বয়সের কর্মচারীদের তথ্য রিটার্ন করবে। @age প্যারামিটারটি ব্যবহারকারী থেকে ইনপুট হিসেবে নেয় এবং তা অনুসারে EmployeeID, FirstName, LastName, এবং Age রিটার্ন করে।

2.1.2. Inline TVF কল করা

Inline TVF কল করতে নিম্নলিখিত কোড ব্যবহার করতে পারেন:

SELECT * 
FROM dbo.GetEmployeesByAge(30);  -- ৩০ বছর বয়সী কর্মচারীদের তথ্য সংগ্রহ

এটি 30 বছর বয়সী সকল কর্মচারীর ডেটা রিটার্ন করবে।

2.2. Multistatement Table-Valued Function (Multistatement TVF)

Multistatement TVF তে আপনি একাধিক SQL স্টেটমেন্ট ব্যবহার করতে পারেন এবং একটি টেবিল রিটার্ন করতে পারেন। এটি সাধারণত একটি RETURN স্টেটমেন্টে একটি টেবিল ভেরিয়েবল রিটার্ন করে।

2.2.1. Multistatement TVF তৈরি করার উদাহরণ

ধরা যাক, আপনি একটি Multistatement TVF তৈরি করতে চান যা কর্মচারীদের স্যালারি এবং তাদের বয়সের ভিত্তিতে একটি রিপোর্ট তৈরি করবে:

CREATE FUNCTION GetEmployeeSalaryReport ()
RETURNS @EmployeeSalaryReport TABLE 
(
    EmployeeID INT,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    Salary DECIMAL(10, 2),
    Age INT
)
AS
BEGIN
    INSERT INTO @EmployeeSalaryReport (EmployeeID, FirstName, LastName, Salary, Age)
    SELECT EmployeeID, FirstName, LastName, Salary, Age
    FROM Employee
    WHERE Salary > 50000;  -- স্যালারি ৫০,০০০ এর বেশি এমন কর্মচারীদের তথ্য
    RETURN;
END;
GO

এই ফাংশনটি Employee টেবিল থেকে স্যালারি ৫০,০০০ টাকার বেশি এমন কর্মচারীদের তথ্য সংগ্রহ করে এবং @EmployeeSalaryReport নামক টেবিল ভেরিয়েবল রিটার্ন করে।

2.2.2. Multistatement TVF কল করা

Multistatement TVF কল করতে নিম্নলিখিত কোড ব্যবহার করা হয়:

SELECT * 
FROM dbo.GetEmployeeSalaryReport();

এটি সকল কর্মচারীর EmployeeID, FirstName, LastName, Salary, এবং Age রিটার্ন করবে যাদের স্যালারি ৫০,০০০ এর বেশি।


3. Function Drop করা (Dropping a Function)

যদি আপনি একটি ফাংশন মুছে ফেলতে চান, তবে DROP FUNCTION কমান্ড ব্যবহার করতে হবে।

DROP FUNCTION dbo.AddNumbers;
GO

এই কমান্ডটি AddNumbers ফাংশনটি ডেটাবেস থেকে মুছে ফেলবে।


সারাংশ

  • Scalar Functions একক মান রিটার্ন করে এবং সেগুলি সাধারণত নির্দিষ্ট গণনা বা প্রসেসিংয়ের জন্য ব্যবহার করা হয়।
  • Table-Valued Functions (TVFs) একটি টেবিল রিটার্ন করে, যেগুলি একাধিক রেকর্ড এবং কলাম রিটার্ন করার জন্য ব্যবহৃত হয়।
  • Inline TVF একটি SELECT স্টেটমেন্ট থেকে রিটার্ন হয়, আর Multistatement TVF একাধিক স্টেটমেন্ট ব্যবহার করে টেবিল রিটার্ন করে।
Content added By
Promotion

Are you sure to start over?

Loading...