Stored Procedure এর মাধ্যমে Complex Logic Execute করা

Teradata Macros এবং Stored Procedures - টেরাডেটা (Teradata) - Big Data and Analytics

293

Stored Procedure হল একটি প্রাক-ডিফাইন্ড SQL কোডের ব্লক যা ডেটাবেসে সংরক্ষিত থাকে এবং একাধিক বার চালানো যায়। এই প্রক্রিয়াটি বিভিন্ন ধরনের ডেটাবেস অপারেশন বা লজিকাল প্রক্রিয়া স্বয়ংক্রিয়ভাবে সম্পাদন করার জন্য ব্যবহৃত হয়। Stored Procedure-এ সাধারণত একাধিক SQL স্টেটমেন্ট থাকতে পারে, এবং এটি ইনপুট প্যারামিটার গ্রহণ করতে পারে, যা অপারেশনগুলির মধ্যে নমনীয়তা এনে দেয়।

টেরাডেটাতে Stored Procedure ব্যবহার করা হয় ডেটাবেসে জটিল লজিক প্রক্রিয়া সম্পাদন, রিপোর্ট তৈরী, অ্যালার্ম বা ট্রিগার সিস্টেম চালানো, অথবা ডেটা ম্যানিপুলেশন অপারেশন করতে।


Stored Procedure এর বৈশিষ্ট্য

  1. SQL কোডের পুনঃব্যবহার: একবার লিখে এবং সংরক্ষণ করলে, এটি বারবার চালানো যেতে পারে।
  2. ডেটা ম্যানিপুলেশন: ডেটা নির্বাচন, আপডেট, ইনসার্ট এবং ডিলিট সহ বিভিন্ন SQL কমান্ড একসাথে চালানো সম্ভব।
  3. লজিক্যাল কন্ট্রোল: প্রোগ্রামিং লজিক যেমন লুপ, কন্ডিশনাল চেক (IF/ELSE), এক্সেপশন হ্যান্ডলিং ইত্যাদি ব্যবহার করা যায়।
  4. ট্রানজেকশন ম্যানেজমেন্ট: Stored Procedure-এ COMMIT, ROLLBACK এবং SAVEPOINT ব্যবহার করা সম্ভব, যা ট্রানজেকশনের নিয়ন্ত্রণ নিশ্চিত করে।

Stored Procedure তৈরি এবং চালানো

টেরাডেটাতে Stored Procedure তৈরি করার জন্য CREATE PROCEDURE স্টেটমেন্ট ব্যবহৃত হয় এবং এটি IN, OUT, এবং INOUT প্যারামিটার গ্রহণ করতে পারে। একটি Stored Procedure সাধারণত BEGIN এবং END ব্লক দিয়ে আবৃত থাকে, যেখানে SQL স্টেটমেন্টগুলি থাকে।

Stored Procedure তৈরি করার সাধারণ সিনট্যাক্স:

CREATE PROCEDURE procedure_name (
    IN param1 data_type, 
    OUT param2 data_type
)
BEGIN
    -- SQL statements
    -- Example: SELECT, INSERT, UPDATE, etc.
END;

উদাহরণস্বরূপ, একটি Stored Procedure তৈরি করা যা একজন কর্মচারীর বেতন আপডেট করবে এবং একটি আউটপুট রিটার্ন করবে:

CREATE PROCEDURE update_employee_salary (
    IN emp_id INT,
    IN new_salary DECIMAL(10,2),
    OUT result VARCHAR(100)
)
BEGIN
    -- SQL to update salary
    UPDATE employees
    SET salary = new_salary
    WHERE employee_id = emp_id;

    -- Checking if the update was successful
    IF (SQLCODE = 0) THEN
        SET result = 'Salary updated successfully';
    ELSE
        SET result = 'Error updating salary';
    END IF;
END;

এই Stored Procedure তে, emp_id এবং new_salary ইনপুট প্যারামিটার হিসেবে গ্রহণ করা হয়েছে, এবং result আউটপুট প্যারামিটার হিসেবে রিটার্ন করা হচ্ছে যা বেতন আপডেটের সফলতা বা ত্রুটি সম্পর্কে বার্তা প্রদান করবে।


Complex Logic Execute করার জন্য Stored Procedure এর ব্যবহার

Stored Procedure-এ আপনি complex logic যেমন শর্তাবলী (IF/ELSE), লুপ (LOOP), একাধিক স্টেটমেন্টের গ্রুপ এবং ইন্টারেকটিভ ডেটাবেস অপারেশন একত্রিত করতে পারেন।

১. IF/ELSE লজিক

Stored Procedure তে শর্ত নির্ধারণ করতে IF/ELSE ব্লক ব্যবহার করা হয়। এটি ডেটাবেস অপারেশন চালানোর আগে বিভিন্ন শর্ত পরীক্ষা করার সুযোগ দেয়।

CREATE PROCEDURE check_employee_bonus (
    IN emp_id INT,
    OUT bonus DECIMAL(10,2)
)
BEGIN
    -- Check employee performance
    DECLARE emp_performance VARCHAR(20);

    SELECT performance_rating INTO emp_performance
    FROM employees
    WHERE employee_id = emp_id;

    -- Apply bonus based on performance
    IF emp_performance = 'Excellent' THEN
        SET bonus = 5000;
    ELSEIF emp_performance = 'Good' THEN
        SET bonus = 3000;
    ELSE
        SET bonus = 1000;
    END IF;
END;

এই Stored Procedure তে, কর্মচারীর পারফরম্যান্স রেটিংয়ের উপর ভিত্তি করে bonus প্রদান করা হচ্ছে।

২. LOOP (লুপ)

একটি লুপ ব্যবহার করে একাধিক রেকর্ড বা অপারেশন চালানো সম্ভব হয়। এখানে WHILE বা FOR লুপ ব্যবহার করা যেতে পারে।

CREATE PROCEDURE process_bulk_sales (
    IN start_date DATE,
    IN end_date DATE
)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE sale_id INT;
    DECLARE sale_amount DECIMAL(10,2);
    DECLARE sales_cursor CURSOR FOR
        SELECT sale_id, amount
        FROM sales
        WHERE sale_date BETWEEN start_date AND end_date;

    -- Open cursor and loop through sales records
    OPEN sales_cursor;

    read_loop: LOOP
        FETCH sales_cursor INTO sale_id, sale_amount;
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Update sale amount (for example, apply discount)
        UPDATE sales
        SET amount = sale_amount * 0.9
        WHERE sale_id = sale_id;

    END LOOP;

    CLOSE sales_cursor;
END;

এই Stored Procedure তে, একটি CURSOR ব্যবহার করা হয়েছে যা নির্দিষ্ট সময়সীমার মধ্যে সমস্ত বিক্রয় রেকর্ডকে প্রক্রিয়া করছে এবং প্রতিটি রেকর্ডের জন্য ডিসকাউন্ট অ্যাপ্লাই করছে।

৩. Error Handling (এক্সেপশন হ্যান্ডলিং)

টেরাডেটাতে Stored Procedure তে ERROR HANDLING করার জন্য DECLARE এবং SIGNAL ব্যবহার করা হয়। যদি কোনো ত্রুটি ঘটে, তবে আপনি এটি সনাক্ত করতে পারেন এবং সংশ্লিষ্ট বার্তা প্রদান করতে পারেন।

CREATE PROCEDURE transfer_funds (
    IN from_account INT,
    IN to_account INT,
    IN transfer_amount DECIMAL(10,2),
    OUT status_message VARCHAR(100)
)
BEGIN
    DECLARE insufficient_funds CONDITION FOR SQLSTATE '45000';

    -- Check if sufficient funds are available
    IF (SELECT balance FROM accounts WHERE account_id = from_account) < transfer_amount THEN
        SIGNAL insufficient_funds SET MESSAGE_TEXT = 'Insufficient funds';
    ELSE
        -- Perform transfer
        UPDATE accounts
        SET balance = balance - transfer_amount
        WHERE account_id = from_account;

        UPDATE accounts
        SET balance = balance + transfer_amount
        WHERE account_id = to_account;

        SET status_message = 'Transfer completed successfully';
    END IF;
END;

এখানে, TRANSFER_FUNDS নামক Stored Procedure তে যদি অ্যাকাউন্টে পর্যাপ্ত টাকা না থাকে, তবে SIGNAL ব্যবহার করে একটি ত্রুটি বার্তা (Insufficient funds) তৈরি করা হচ্ছে।


Stored Procedure এর মাধ্যমে Complex Logic এর সুবিধা

  1. স্বয়ংক্রিয়করণ: Stored Procedure এর মাধ্যমে একাধিক SQL স্টেটমেন্ট একযোগে চলতে পারে, যা পুনরাবৃত্তিমূলক কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করে।
  2. কোডের পুনঃব্যবহার: একবার তৈরি করা Stored Procedure অনেকবার ব্যবহার করা যেতে পারে, যেহেতু এটি ডেটাবেসে সংরক্ষিত থাকে।
  3. পারফরম্যান্স উন্নয়ন: কোড ডেটাবেসে সংরক্ষিত থাকার কারণে এটি প্রসেসিং টাইম কমায় এবং নেটওয়ার্ক ব্যান্ডউইথ সাশ্রয়ী হয়।
  4. ট্রানজেকশন ম্যানেজমেন্ট: Stored Procedure ব্যবহার করে COMMIT এবং ROLLBACK নিয়ন্ত্রণ করা যেতে পারে, যা ডেটা এক্সেসের সঠিকতা এবং ধারাবাহিকতা নিশ্চিত করে।

সারাংশ

Stored Procedure টেরাডেটাতে একটি শক্তিশালী টুল যা ডেটাবেসে জটিল লজিক প্রক্রিয়া করতে ব্যবহৃত হয়। এটি একাধিক SQL স্টেটমেন্টের গ্রুপ তৈরি করতে সহায়তা করে এবং ডেটাবেস অপারেশনগুলো দ্রুত এবং কার্যকরীভাবে সম্পন্ন করতে সাহায্য করে। Complex Logic যেমন IF/ELSE, LOOP, এবং Error Handling এর মাধ্যমে Stored Procedure খুবই কার্যকরী, এবং এটি ডেটাবেসের কাজকে আরও সুশৃঙ্খল এবং নির্ভরযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...