Inline এবং Multi-Statement Functions গাইড ও নোট

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

T-SQL এ Inline Functions এবং Multi-Statement Functions দুটি ধরনের স্কালেবল ও পুনঃব্যবহারযোগ্য ফাংশন। এগুলি ডেটাবেস অপারেশনগুলোকে মডুলার এবং আরও সহজে ব্যবস্থাপনা করার সুযোগ প্রদান করে। তবে, এদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্যও রয়েছে। নিচে এই ফাংশনগুলোর বৈশিষ্ট্য, ব্যবহারের কেস, এবং পার্থক্যগুলো আলোচনা করা হলো।


১. Inline Table-Valued Functions (TVF)

Inline Functions হল এমন ফাংশন যা একটি একক SELECT স্টেটমেন্ট ধারণ করে এবং কোনো কন্ট্রোল ফ্লো বা মাল্টিপল স্টেটমেন্ট থাকে না। এটি সাধারণত Table-Valued Function (TVF) হিসাবে ব্যবহৃত হয়, যা একটি টেবিলের মতো রিটার্ন করে এবং একক কুয়েরি হিসেবে কাজ করে।

বৈশিষ্ট্য:

  • Single SELECT statement: Inline function একটি সিঙ্গেল SELECT স্টেটমেন্টে কাজ করে।
  • No BEGIN...END block: Inline function এ BEGIN...END ব্লক থাকে না, কারণ এটি একটি একক কুয়েরি।
  • Returns a table: এটি টেবিলের মতো ডেটা রিটার্ন করে, যা আপনি JOIN, WHERE, এবং অন্যান্য কুয়েরি অপারেশনগুলিতে ব্যবহার করতে পারেন।
  • Performance: Inline functions সাধারণত দ্রুত এবং পারফর্ম্যান্সে ভালো, কারণ এটি একটি সহজ কুয়েরি হিসেবে কাজ করে এবং এটি ভিউ (view)-এর মতো আচরণ করে।

উদাহরণ: Inline Function

-- Inline Function তৈরি করা
CREATE FUNCTION dbo.fn_GetEmployeeDetails (@DepartmentID INT)
RETURNS TABLE
AS
RETURN
(
    SELECT EmployeeID, EmployeeName
    FROM Employees
    WHERE DepartmentID = @DepartmentID
);

এখানে, fn_GetEmployeeDetails ফাংশনটি DepartmentID এর ভিত্তিতে Employees টেবিল থেকে EmployeeID এবং EmployeeName রিটার্ন করে।

ফাংশন কল করা:

SELECT * FROM dbo.fn_GetEmployeeDetails(1);

এটি DepartmentID = 1 এর সকল কর্মচারীর তথ্য রিটার্ন করবে।


২. Multi-Statement Table-Valued Functions (TVF)

Multi-Statement Functions হল এমন ফাংশন যেখানে একাধিক SQL স্টেটমেন্ট থাকে এবং এটি একটি টেবিল রিটার্ন করে, তবে একাধিক INSERT, UPDATE, অথবা SELECT স্টেটমেন্টের মাধ্যমে ডেটা প্রসেস করা হতে পারে। এই ফাংশনটি একটি টেবিল পরিবর্তন বা প্রক্রিয়া করার জন্য একাধিক স্টেটমেন্ট ধারণ করে।

বৈশিষ্ট্য:

  • Multiple statements: এই ফাংশনটিতে একাধিক SELECT, INSERT, UPDATE, অথবা DELETE স্টেটমেন্ট থাকতে পারে।
  • BEGIN...END block: মাল্টি-স্টেটমেন্ট ফাংশন একটি BEGIN...END ব্লক ধারণ করে।
  • Returns a table: এটি একটি টেবিল রিটার্ন করে এবং এর মধ্যে সমস্ত স্টেটমেন্টগুলো একত্রে কার্যকর হয়।
  • Performance: এই ফাংশনটি Inline function থেকে কিছুটা ধীর হতে পারে, কারণ এতে একাধিক স্টেটমেন্ট থাকে।

উদাহরণ: Multi-Statement Function

-- Multi-Statement Function তৈরি করা
CREATE FUNCTION dbo.fn_GetEmployeeSalary (@DepartmentID INT)
RETURNS @EmployeeSalary TABLE
(
    EmployeeID INT,
    EmployeeName VARCHAR(100),
    Salary DECIMAL(10, 2)
)
AS
BEGIN
    -- প্রথম SELECT স্টেটমেন্ট
    INSERT INTO @EmployeeSalary (EmployeeID, EmployeeName)
    SELECT EmployeeID, EmployeeName
    FROM Employees
    WHERE DepartmentID = @DepartmentID;
    
    -- দ্বিতীয় SELECT স্টেটমেন্ট
    UPDATE @EmployeeSalary
    SET Salary = (SELECT SUM(Salary) FROM EmployeeSalaries WHERE EmployeeSalaries.EmployeeID = @EmployeeSalary.EmployeeID)
    
    RETURN;
END;

এখানে, fn_GetEmployeeSalary ফাংশনটি প্রথমে একটি SELECT স্টেটমেন্ট ব্যবহার করে EmployeeID এবং EmployeeName প্রাপ্ত করে, তারপর EmployeeSalaries টেবিল থেকে Salary আপডেট করে।

ফাংশন কল করা:

SELECT * FROM dbo.fn_GetEmployeeSalary(1);

এটি DepartmentID = 1 এর সকল কর্মচারীর তথ্য এবং তাদের Salary রিটার্ন করবে।


৩. Inline এবং Multi-Statement Functions এর মধ্যে পার্থক্য

বৈশিষ্ট্যInline FunctionMulti-Statement Function
সংগঠনএকটি একক SELECT স্টেটমেন্টএকাধিক SELECT, INSERT, UPDATE, ইত্যাদি স্টেটমেন্ট
কোডের জটিলতাসাধারণ এবং সরলজটিল, একাধিক স্টেটমেন্টসহ
পারফরম্যান্সদ্রুত এবং পারফর্ম্যান্সে ভালোকিছুটা ধীর, কারণ একাধিক স্টেটমেন্ট থাকে
ফাংশনের সিমপ্লিসিটিসহজ এবং ক্লিন কোডকোডের জটিলতা বেশি, কারণ একাধিক স্টেটমেন্ট
ডেটা রিটার্নএকটি টেবিল রিটার্ন করেএকটি টেবিল রিটার্ন করে
BEGIN...END ব্লকনেইথাকে
ব্যবহারের কেসসহজ, একক কুয়েরি ভিত্তিক কাজজটিল প্রক্রিয়া যেখানে একাধিক স্টেটমেন্ট প্রয়োজন

সারাংশ

  • Inline Functions হল সিঙ্গেল SELECT স্টেটমেন্ট সহ ফাংশন, যা দ্রুত এবং সহজে ব্যবহৃত হয়। এটি পারফরম্যান্সের দিক থেকে ভাল, তবে একাধিক কন্ডিশন বা অপারেশন প্রক্রিয়া করার জন্য এটি সীমিত হতে পারে।
  • Multi-Statement Functions একাধিক SQL স্টেটমেন্ট ধারণ করে এবং বড় ডেটা প্রসেসিংয়ের জন্য উপযুক্ত। তবে এগুলির পারফরম্যান্স Inline Functions এর তুলনায় কিছুটা ধীর হতে পারে, কারণ এতে একাধিক স্টেটমেন্ট থাকে।

আপনার প্রয়োজনে নির্ভর করে, আপনি Inline Functions অথবা Multi-Statement Functions ব্যবহার করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...