Scalar এবং Table-Valued Functions এর ধারণা

Functions তৈরি এবং ব্যবহার - টি-এসকিউএল (T-SQL) - Database Tutorials

341

Scalar Functions এবং Table-Valued Functions (TVF), দুটি প্রধান ধরনের ফাংশন যা SQL Server-এ ব্যবহৃত হয়, ডেটাবেস অপারেশনগুলিকে আরও কার্যকর এবং পুনঃব্যবহারযোগ্য করতে। এগুলি Stored Procedures থেকে আলাদা, কারণ ফাংশনগুলি সাধারণত একটি একক মান বা একটি টেবিল রিটার্ন করে, এবং এগুলি অন্য SQL কুয়েরিতে সরাসরি ব্যবহার করা যায়।

নিচে Scalar Functions এবং Table-Valued Functions এর বিস্তারিত ধারণা এবং ব্যবহারের উদাহরণ দেওয়া হলো।


১. Scalar Function

Scalar Function হল একটি ফাংশন যা একক মান রিটার্ন করে। এই ফাংশনটি কোনো একটি ইনপুট প্যারামিটার গ্রহণ করে এবং তার ভিত্তিতে একটি মান (যেমন একটি সংখ্যা, স্ট্রিং, তারিখ ইত্যাদি) রিটার্ন করে।

Scalar Function এর গঠন:

CREATE FUNCTION function_name (@parameter datatype)
RETURNS datatype
AS
BEGIN
    DECLARE @result datatype;
    -- কোড লিখুন যা @parameter ভিত্তিক @result নির্ধারণ করবে
    RETURN @result;
END;

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

ধরা যাক, আমাদের একটি Scalar Function তৈরি করতে হবে যা একটি কর্মীর বেতন এবং তার বোনাসের ভিত্তিতে তার মোট বেতন রিটার্ন করবে:

CREATE FUNCTION GetTotalSalary (@EmployeeID INT)
RETURNS DECIMAL(10, 2)
AS
BEGIN
    DECLARE @BaseSalary DECIMAL(10, 2);
    DECLARE @Bonus DECIMAL(10, 2);
    
    -- কর্মীর বেতন এবং বোনাস নির্বাচন করা
    SELECT @BaseSalary = Salary FROM Employees WHERE EmployeeID = @EmployeeID;
    SELECT @Bonus = Bonus FROM EmployeeBonus WHERE EmployeeID = @EmployeeID;

    -- মোট বেতন হিসাব করা এবং রিটার্ন করা
    RETURN @BaseSalary + @Bonus;
END;

Scalar Function কল করা:

SELECT dbo.GetTotalSalary(101);

এখানে, GetTotalSalary ফাংশনটি একটি EmployeeID গ্রহণ করে এবং সেই কর্মীর Salary এবং Bonus যোগফল রিটার্ন করবে।


২. Table-Valued Function (TVF)

Table-Valued Function হল একটি ফাংশন যা একটি টেবিল রিটার্ন করে। এই ফাংশনটি একটি বা একাধিক ইনপুট প্যারামিটার গ্রহণ করে এবং একটি টেবিল আউটপুট হিসাবে প্রদান করে, যা SQL কুয়েরি বা স্টোরড প্রসিডিউরে ব্যবহার করা যায়। TVF সাধারণত Inline বা Multi-Statement হিসাবে দুই ধরনের হতে পারে।

Inline Table-Valued Function এর গঠন:

CREATE FUNCTION function_name (@parameter datatype)
RETURNS TABLE
AS
RETURN
(
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition
);

Multi-Statement Table-Valued Function এর গঠন:

CREATE FUNCTION function_name (@parameter datatype)
RETURNS @table_variable TABLE (column1 datatype, column2 datatype, ...)
AS
BEGIN
    -- কোড লিখুন যা টেবিল তৈরি করবে এবং ডেটা ইনসার্ট করবে
    INSERT INTO @table_variable (column1, column2)
    SELECT column1, column2 FROM table_name WHERE condition;

    RETURN;
END;

উদাহরণ: Inline Table-Valued Function

ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা একটি নির্দিষ্ট DepartmentID এর ভিত্তিতে কর্মীদের তালিকা রিটার্ন করবে।

CREATE FUNCTION GetEmployeesByDepartment (@DepartmentID INT)
RETURNS TABLE
AS
RETURN
(
    SELECT EmployeeID, Name, Position
    FROM Employees
    WHERE DepartmentID = @DepartmentID
);

Table-Valued Function কল করা:

এখন আপনি এই ফাংশনটি ব্যবহার করে কর্মীদের তালিকা পেতে পারেন:

SELECT * FROM dbo.GetEmployeesByDepartment(3);

এটি DepartmentID 3 এর সকল কর্মীদের EmployeeID, Name, এবং Position রিটার্ন করবে।


উদাহরণ: Multi-Statement Table-Valued Function

ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা একটি নির্দিষ্ট Salary এর উপরে কর্মীদের নির্বাচন করবে এবং তাদের ডেটা একটি টেবিল আকারে প্রদান করবে।

CREATE FUNCTION GetEmployeesAboveSalary (@SalaryThreshold DECIMAL(10, 2))
RETURNS @EmployeeTable TABLE (EmployeeID INT, Name NVARCHAR(100), Salary DECIMAL(10, 2))
AS
BEGIN
    INSERT INTO @EmployeeTable (EmployeeID, Name, Salary)
    SELECT EmployeeID, Name, Salary
    FROM Employees
    WHERE Salary > @SalaryThreshold;

    RETURN;
END;

Table-Valued Function কল করা:

এখন আপনি ফাংশনটি কল করে কর্মীদের তালিকা পেতে পারেন যারা Salary এর উপরে আছেন:

SELECT * FROM dbo.GetEmployeesAboveSalary(50000);

এটি সমস্ত কর্মী যারা Salary 50,000 এর উপরে, তাদের EmployeeID, Name, এবং Salary রিটার্ন করবে।


Scalar এবং Table-Valued Functions এর মধ্যে পার্থক্য

বৈশিষ্ট্যScalar FunctionTable-Valued Function (TVF)
রিটার্ন টাইপএকক মান (scalar value)একটি টেবিল (table)
ইনপুট প্যারামিটারএকটি বা একাধিক ইনপুট প্যারামিটারএকটি বা একাধিক ইনপুট প্যারামিটার
ব্যবহারঅন্য ফাংশন বা কুয়েরির মধ্যে একক মান হিসেবে ব্যবহৃতটেবিল হিসেবে কুয়েরি বা স্টোরড প্রসিডিউরে ব্যবহৃত
কনটেক্সটসাধারণত প্রাথমিক মানের সাথে কাজ করেকাস্টম টেবিল আউটপুট তৈরি করে
ব্যবহারযোগ্যতাসাধারণ ক্যালকুলেশন, প্রক্রিয়াকরণজটিল ডেটা সেটের সাথে কাজ করতে ব্যবহৃত

সারাংশ

  • Scalar Function: এটি একটি ফাংশন যা একক মান (যেমন একটি সংখ্যা, তারিখ, স্ট্রিং ইত্যাদি) রিটার্ন করে এবং এটি সাধারণত ডেটাবেসের ছোট পরিবর্তন বা গণনা করার জন্য ব্যবহৃত হয়।
  • Table-Valued Function (TVF): এটি একটি ফাংশন যা একটি সম্পূর্ণ টেবিল আউটপুট রিটার্ন করে এবং এটি SQL কুয়েরি বা স্টোরড প্রসিডিউর-এ ব্যবহার করা যায়। TVF ডেটাবেসে জটিল ডেটা সেটের জন্য উপযোগী।

এই দুই ধরনের ফাংশন SQL Server-এ ডেটাবেসের কার্যক্ষমতা, কাস্টমাইজেশন এবং পুনঃব্যবহারযোগ্যতার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion

Are you sure to start over?

Loading...