PL/SQL-এ ভেরিয়েবলগুলি একটি গুরুত্বপূর্ণ অংশ, যেগুলি ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে ব্যবহৃত হয়। ভেরিয়েবলগুলি সাধারণত ডেটাবেস বা প্রোগ্রামিং লজিকের মধ্যে ডেটা স্টোর করতে সাহায্য করে। ভেরিয়েবল ঘোষণা করার সময়, আপনাকে একটি ডেটা টাইপ এবং একটি ভেরিয়েবলের নাম নির্বাচন করতে হয়। এছাড়াও, আপনি প্রয়োজনীয় ডিফল্ট মানও প্রদান করতে পারেন।
১. ভেরিয়েবল ঘোষণা করা (Declaring Variables)
PL/SQL-এ ভেরিয়েবলগুলি DECLARE সেকশনে ঘোষণা করা হয়। এখানে আপনি ভেরিয়েবলের নাম এবং তার ডেটা টাইপ উল্লেখ করেন।
ভেরিয়েবল ঘোষণা করার সিমেন্ট্যাক্স:
DECLARE
<variable_name> <data_type>;
ভেরিয়েবল ঘোষণা করার উদাহরণ:
DECLARE
v_employee_name VARCHAR2(50); -- Employee name variable
v_employee_id NUMBER(6); -- Employee ID variable
v_salary NUMBER(8,2); -- Salary variable
এখানে:
v_employee_name: একটি VARCHAR2 টাইপ ভেরিয়েবল যা ৫০ ক্যারেক্টার পর্যন্ত স্টোর করতে পারে।v_employee_id: একটি NUMBER টাইপ ভেরিয়েবল যা ৬ ডিজিট পর্যন্ত স্টোর করতে পারে।v_salary: একটি NUMBER টাইপ ভেরিয়েবল যা ৮ ডিজিট, যার মধ্যে ২টি ডেসিমাল পয়েন্ট থাকবে।
২. ভেরিয়েবল ব্যবহার করা (Using Variables)
ভেরিয়েবল ব্যবহার করতে হলে, সেগুলি BEGIN সেকশনে ব্যবহৃত হয়। এখানে, আপনি বিভিন্ন ধরনের SQL বা PL/SQL স্টেটমেন্টের মধ্যে ভেরিয়েবলগুলি অ্যাক্সেস এবং ম্যানিপুলেট করতে পারেন।
১. SELECT INTO Statement
ভেরিয়েবলগুলির মান অ্যাসাইন করতে SQL স্টেটমেন্ট ব্যবহার করা হয়, যেমন SELECT INTO।
উদাহরণ:
BEGIN
-- Selecting data from employees table and assigning to variables
SELECT employee_name, salary INTO v_employee_name, v_salary
FROM employees
WHERE employee_id = 101;
-- Displaying the fetched data
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_employee_name);
DBMS_OUTPUT.PUT_LINE('Employee Salary: ' || v_salary);
END;
এখানে:
v_employee_nameএবংv_salaryভেরিয়েবলগুলিতে employees টেবিল থেকে ডেটা অ্যাসাইন করা হয়েছে।
২. Assignment Statements
PL/SQL-এ আপনি সরাসরি ভেরিয়েবলে মান অ্যাসাইন করতে পারেন। এটি একটি সাধারণ পদ্ধতি।
উদাহরণ:
BEGIN
v_employee_id := 101; -- Assigning a value to the variable
v_salary := 5500.50; -- Assigning a value to the salary variable
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_employee_id);
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;
এখানে:
v_employee_idএবংv_salaryভেরিয়েবলগুলির মান := (Assignment Operator) ব্যবহার করে অ্যাসাইন করা হয়েছে।
৩. Conditional Logic with Variables
ভেরিয়েবলগুলিকে শর্তসাপেক্ষ লজিক (যেমন IF বা CASE স্টেটমেন্ট) এর মধ্যে ব্যবহার করা হয়।
উদাহরণ:
BEGIN
v_salary := 5500;
IF v_salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('High salary');
ELSE
DBMS_OUTPUT.PUT_LINE('Normal salary');
END IF;
END;
এখানে:
v_salaryভেরিয়েবলটির মানের উপর ভিত্তি করে শর্ত চেক করা হচ্ছে এবং এর ফলাফলDBMS_OUTPUT.PUT_LINEদিয়ে আউটপুট হিসেবে দেখানো হচ্ছে।
৩. ভেরিয়েবল ডেটা টাইপ নির্বাচন
ভেরিয়েবলের ডেটা টাইপ নির্বাচন গুরুত্বপূর্ণ, কারণ এটি ডেটার সঠিকতা নিশ্চিত করে এবং কার্যকারিতার দক্ষতা বাড়ায়। PL/SQL-এ কিছু সাধারণ ডেটা টাইপ রয়েছে যেমন NUMBER, VARCHAR2, DATE, BOOLEAN, CHAR, ইত্যাদি।
ভেরিয়েবল ডেটা টাইপের উদাহরণ:
- NUMBER:
- পূর্ণসংখ্যা বা দশমিক সংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়।
- Syntax:
NUMBER(p, s)wherepis precision andsis scale. - উদাহরণ:
v_salary NUMBER(8, 2);(8 digits, 2 after decimal)
- VARCHAR2:
- স্ট্রিং সংরক্ষণ করতে ব্যবহৃত হয়।
- Syntax:
VARCHAR2(size) - উদাহরণ:
v_name VARCHAR2(100);(Maximum 100 characters)
- DATE:
- তারিখ এবং সময় সংরক্ষণ করতে ব্যবহৃত হয়।
- Syntax:
DATE - উদাহরণ:
v_hire_date DATE;
- BOOLEAN:
- শুধু দুটি মান ধারণ করতে পারে: TRUE অথবা FALSE।
- Syntax:
BOOLEAN - উদাহরণ:
v_is_active BOOLEAN;
৪. Anchored Data Types (%TYPE এবং %ROWTYPE)
Anchored data types ভেরিয়েবলের ডেটা টাইপ নির্ধারণ করার সময় আপনি টেবিলের কলাম বা রেকর্ডের সাথে সম্পর্কিত ডেটা টাইপ ব্যবহার করতে পারেন। এটি ডেটাবেসের কাঠামোর সাথে সিনক্রোনাইজড রাখতে সাহায্য করে।
%TYPE: এটি একটি কলামের ডেটা টাইপকে অ্যাসাইন করার জন্য ব্যবহৃত হয়।
DECLARE v_employee_name employees.employee_name%TYPE; -- Anchored to employees table column%ROWTYPE: এটি একটি টেবিলের একটি সম্পূর্ণ রেকর্ড টাইপের জন্য ব্যবহৃত হয়।
DECLARE v_employee employees%ROWTYPE; -- Anchored to the entire row of employees table
৫. ভেরিয়েবল এর স্কোপ (Scope)
ভেরিয়েবলের স্কোপ নির্ধারণ করে যে ভেরিয়েবলটি কোন অংশে অ্যাক্সেসযোগ্য। PL/SQL-এ ভেরিয়েবলগুলি সাধারণত প্রোগ্রাম ব্লক বা সাব-প্রোগ্রাম (ফাংশন, প্রোসিডিউর) অনুযায়ী স্কোপ থাকে।
- Block-level variables: ভেরিয়েবলটি শুধুমাত্র সেই ব্লকের মধ্যে অ্যাক্সেসযোগ্য যেখানে তা ডিক্লেয়ার করা হয়েছে।
- Global variables: যদি কোনও ভেরিয়েবল প্রোগ্রামের বাইরে ডিক্লেয়ার করা হয়, তবে এটি প্রোগ্রামের সব অংশে অ্যাক্সেসযোগ্য হতে পারে।
সারাংশ:
PL/SQL-এ ভেরিয়েবল ঘোষণা করা এবং ব্যবহার করা খুবই গুরুত্বপূর্ণ এবং এটি প্রোগ্রামের কার্যকারিতার মধ্যে ডেটা পরিচালনার জন্য অপরিহার্য। আপনি ভেরিয়েবলগুলি বিভিন্ন ডেটা টাইপ এবং ডিক্লেয়ারেশন মেথড ব্যবহার করে ঘোষণা এবং ব্যবহারের মাধ্যমে প্রোগ্রামে লজিক এবং ডেটাবেস অপারেশন সম্পাদন করতে পারবেন।