PL/SQL প্রোগ্রামিং ভাষায় কন্ডিশনাল স্টেটমেন্টস এবং লুপ ব্যবহার করে আপনি শর্তানুযায়ী কোডের প্রবাহ নিয়ন্ত্রণ করতে পারেন। এটি কোডকে আরও ফ্লেক্সিবল এবং কার্যকর করে তোলে।
১. কন্ডিশনাল স্টেটমেন্টস (Conditional Statements)
কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে আপনি একটি নির্দিষ্ট শর্ত পূর্ণ হলে কিছু কোড এক্সিকিউট করতে পারেন। PL/SQL এ তিনটি প্রধান কন্ডিশনাল স্টেটমেন্ট আছে:
- IF...THEN...ELSE
- CASE
- NULLIF
১.১. IF...THEN...ELSE
IF...THEN...ELSE স্টেটমেন্টটি একটি শর্তের উপর ভিত্তি করে কোড এক্সিকিউট করার জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
IF condition THEN
-- Code to execute if the condition is TRUE
ELSIF another_condition THEN
-- Code to execute if the second condition is TRUE
ELSE
-- Code to execute if none of the above conditions are TRUE
END IF;
উদাহরণ:
DECLARE
v_salary NUMBER := 50000;
BEGIN
IF v_salary > 40000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is above 40,000');
ELSIF v_salary > 30000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is between 30,000 and 40,000');
ELSE
DBMS_OUTPUT.PUT_LINE('Salary is below 30,000');
END IF;
END;
এখানে, প্রথম শর্তটি যদি পূর্ণ হয় (salary > 40000), তবে প্রথম ব্লকটি এক্সিকিউট হবে, অন্যথায় পরবর্তী শর্ত পরীক্ষা হবে।
১.২. CASE স্টেটমেন্ট
CASE স্টেটমেন্টটি একটি একক এক্সপ্রেশনের মানের সাথে মিলিয়ে শর্ত চেক করে। এটি প্রায়শই IF...THEN...ELSE এর বিকল্প হিসেবে ব্যবহৃত হয়।
সিনট্যাক্স:
CASE expression
WHEN value1 THEN
-- Code to execute if expression equals value1
WHEN value2 THEN
-- Code to execute if expression equals value2
ELSE
-- Code to execute if expression does not match any value
END CASE;
উদাহরণ:
DECLARE
v_grade CHAR := 'A';
BEGIN
CASE v_grade
WHEN 'A' THEN
DBMS_OUTPUT.PUT_LINE('Excellent');
WHEN 'B' THEN
DBMS_OUTPUT.PUT_LINE('Good');
WHEN 'C' THEN
DBMS_OUTPUT.PUT_LINE('Average');
ELSE
DBMS_OUTPUT.PUT_LINE('Invalid grade');
END CASE;
END;
এখানে, v_grade এর মানের উপর ভিত্তি করে কোড এক্সিকিউট হবে।
১.৩. NULLIF স্টেটমেন্ট
NULLIF একটি ইনবিল্ট ফাংশন, যা দুটি মানের তুলনা করে এবং যদি তারা সমান হয়, তবে NULL রিটার্ন করে।
উদাহরণ:
DECLARE
v_x NUMBER := 5;
v_y NUMBER := 5;
BEGIN
DBMS_OUTPUT.PUT_LINE(NULLIF(v_x, v_y)); -- Returns NULL as v_x and v_y are equal
END;
২. লুপ (Loops)
PL/SQL এ লুপ ব্যবহার করে নির্দিষ্ট সংখ্যক বার কোড এক্সিকিউট করা হয়। তিন ধরনের লুপ রয়েছে:
- LOOP
- WHILE LOOP
- FOR LOOP
২.১. LOOP
LOOP একটি নির্দিষ্ট শর্ত বা নিষ্ক্রিয়তা না হওয়া পর্যন্ত একটি ব্লক এক্সিকিউট করতে ব্যবহৃত হয়। এটি একটি "infinite loop" হতে পারে, তাই একটি EXIT শর্ত ব্যবহার করা হয়।
সিনট্যাক্স:
LOOP
-- Code to execute
EXIT WHEN condition; -- Exit condition
END LOOP;
উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 5; -- Exit when counter exceeds 5
END LOOP;
END;
এখানে, v_counter এর মান ৫ এর চেয়ে বেশি হলে লুপ বন্ধ হয়ে যাবে।
২.২. WHILE LOOP
WHILE LOOP একটি শর্ত নির্ধারণ করে কোড এক্সিকিউট করার জন্য। যতক্ষণ পর্যন্ত শর্তটি TRUE থাকে, লুপটি চলতে থাকে।
সিনট্যাক্স:
WHILE condition LOOP
-- Code to execute
END LOOP;
উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
WHILE v_counter <= 5 LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
এখানে, v_counter ৫ এর চেয়ে কম থাকলে লুপ চলবে এবং প্রতিবারে v_counter এর মান বাড়ানো হবে।
২.৩. FOR LOOP
FOR LOOP একটি নির্দিষ্ট পরিসরের মধ্যে কোড এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি বেশ সুবিধাজনক যখন আপনি একটি নির্দিষ্ট সংখ্যা বার কোড এক্সিকিউট করতে চান।
সিনট্যাক্স:
FOR counter IN [REVERSE] start_value..end_value LOOP
-- Code to execute
END LOOP;
উদাহরণ:
DECLARE
v_sum NUMBER := 0;
BEGIN
FOR v_counter IN 1..5 LOOP
v_sum := v_sum + v_counter;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Total Sum: ' || v_sum);
END;
এখানে, v_counter ১ থেকে ৫ পর্যন্ত গুনমান (iteration) করবে, এবং তাদের যোগফল v_sum এ রাখা হবে।
৩. EXIT এবং CONTINUE স্টেটমেন্ট
- EXIT: লুপ থেকে প্রস্থান করার জন্য ব্যবহৃত হয়।
- CONTINUE: লুপের বর্তমান ইটারেশন শেষ করে পরবর্তী ইটারেশনে চলে যাওয়ার জন্য ব্যবহৃত হয়।
উদাহরণ:
DECLARE
v_counter NUMBER := 0;
BEGIN
LOOP
v_counter := v_counter + 1;
IF v_counter = 3 THEN
CONTINUE; -- Skip the current iteration when counter is 3
END IF;
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
EXIT WHEN v_counter = 5;
END LOOP;
END;
এখানে, যখন v_counter এর মান ৩ হয়, তখন CONTINUE স্টেটমেন্ট কার্যকর হবে, এবং ৩ বাদে পরবর্তী মানগুলো প্রিন্ট হবে।
সারাংশ:
PL/SQL এ কন্ডিশনাল স্টেটমেন্টস এবং লুপ ব্যবহারের মাধ্যমে আপনি প্রোগ্রামটির কার্যকারিতা বৃদ্ধি করতে পারেন। IF...THEN...ELSE, CASE, এবং NULLIF কন্ডিশনাল স্টেটমেন্টের মাধ্যমে শর্ত অনুযায়ী কোড পরিচালনা করা হয়। অপরদিকে, LOOP, WHILE LOOP, এবং FOR LOOP এর মাধ্যমে নির্দিষ্ট পরিমাণ বার বা শর্তানুযায়ী কোড এক্সিকিউট করা যায়। EXIT এবং CONTINUE স্টেটমেন্ট ব্যবহার করে লুপের কার্যক্রম আরও নিয়ন্ত্রণযোগ্য করা যায়।
PL/SQL-এ IF, ELSIF, এবং ELSE স্টেটমেন্টগুলি কন্ডিশনাল লজিক (conditional logic) বাস্তবায়ন করতে ব্যবহৃত হয়। এই স্টেটমেন্টগুলি একটি নির্দিষ্ট শর্তের ভিত্তিতে কোডের বিভিন্ন অংশ চালানোর জন্য ব্যবহার করা হয়। IF স্টেটমেন্টে কিছু শর্ত অনুযায়ী বিভিন্ন কোড ব্লক কার্যকর করা যেতে পারে।
১. IF স্টেটমেন্ট:
IF স্টেটমেন্টটি একটি শর্তের ভিত্তিতে কোডের একটি নির্দিষ্ট অংশ চালানোর জন্য ব্যবহৃত হয়। যদি শর্তটি সত্য (True) হয়, তবে নির্দিষ্ট কোড ব্লকটি চালানো হয়।
সিনট্যাক্স:
IF condition THEN
-- Statements to execute if condition is true
END IF;
উদাহরণ:
DECLARE
v_salary NUMBER := 5000;
BEGIN
IF v_salary > 4000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is greater than 4000');
END IF;
END;
এখানে, যদি v_salary এর মান ৪০০০ এর বেশি হয়, তাহলে DBMS_OUTPUT.PUT_LINE স্টেটমেন্টটি চালানো হবে।
২. ELSIF স্টেটমেন্ট:
ELSIF স্টেটমেন্টটি তখন ব্যবহৃত হয় যখন প্রথম IF শর্তটি সত্য না হলে, অন্য একটি শর্ত পরীক্ষা করতে হয়। একাধিক শর্ত পরীক্ষা করার জন্য ELSIF ব্যবহার করা হয়।
সিনট্যাক্স:
IF condition1 THEN
-- Statements to execute if condition1 is true
ELSIF condition2 THEN
-- Statements to execute if condition2 is true
END IF;
উদাহরণ:
DECLARE
v_salary NUMBER := 5000;
BEGIN
IF v_salary > 7000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is greater than 7000');
ELSIF v_salary > 4000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is greater than 4000 but less than or equal to 7000');
END IF;
END;
এখানে, প্রথমে শর্তটি পরীক্ষা করা হবে (v_salary > 7000), যদি সেটি সঠিক না হয় তবে পরবর্তী ELSIF শর্তটি পরীক্ষা হবে (v_salary > 4000)।
৩. ELSE স্টেটমেন্ট:
ELSE স্টেটমেন্টটি তখন ব্যবহৃত হয় যখন উপরের সকল শর্ত সত্য না হয়। অর্থাৎ, যদি কোনো IF বা ELSIF শর্ত সত্য না হয়, তখন ELSE এর অংশটি চালানো হয়।
সিনট্যাক্স:
IF condition1 THEN
-- Statements to execute if condition1 is true
ELSIF condition2 THEN
-- Statements to execute if condition2 is true
ELSE
-- Statements to execute if none of the above conditions are true
END IF;
উদাহরণ:
DECLARE
v_salary NUMBER := 3000;
BEGIN
IF v_salary > 7000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is greater than 7000');
ELSIF v_salary > 4000 THEN
DBMS_OUTPUT.PUT_LINE('Salary is greater than 4000 but less than or equal to 7000');
ELSE
DBMS_OUTPUT.PUT_LINE('Salary is less than or equal to 4000');
END IF;
END;
এখানে, প্রথম দুটি শর্ত সত্য না হলে, ELSE স্টেটমেন্টটি কার্যকর হবে এবং "Salary is less than or equal to 4000" মেসেজটি প্রিন্ট হবে।
৪. IF-ELSEIF-ELSE ব্লকটির পূর্ণ উদাহরণ:
DECLARE
v_age NUMBER := 20;
BEGIN
IF v_age < 13 THEN
DBMS_OUTPUT.PUT_LINE('You are a child.');
ELSIF v_age >= 13 AND v_age <= 19 THEN
DBMS_OUTPUT.PUT_LINE('You are a teenager.');
ELSE
DBMS_OUTPUT.PUT_LINE('You are an adult.');
END IF;
END;
এখানে, v_age এর মানের ভিত্তিতে তিনটি ভিন্ন স্টেটমেন্টে যেতে হবে:
- যদি বয়স ১৩ বছরের নিচে হয়, তবে
"You are a child." - যদি বয়স ১৩ থেকে ১৯ এর মধ্যে হয়, তবে
"You are a teenager." - অন্যথায়,
"You are an adult."
সারাংশ:
- IF: একটি শর্তের ভিত্তিতে একমাত্র কোড ব্লক চালায়।
- ELSIF: যদি প্রথম শর্তটি মিথ্যা হয়, তবে দ্বিতীয় শর্ত পরীক্ষা করতে ব্যবহৃত হয়।
- ELSE: যদি কোনো শর্ত সত্য না হয়, তবে কোডের একটি বিকল্প অংশ চালানোর জন্য ব্যবহৃত হয়।
এই কন্ডিশনাল স্টেটমেন্টগুলি আপনাকে প্রোগ্রামিংয়ের মধ্যে লজিক্যাল ডিকিশন তৈরি করতে সহায়তা করে, যাতে আপনি শর্ত অনুসারে বিভিন্ন কোড ব্লক কার্যকর করতে পারেন।
PL/SQL-এ CASE স্টেটমেন্ট একটি শর্তগত (conditional) স্টেটমেন্ট, যা একাধিক শর্ত পরীক্ষা করে এবং নির্দিষ্ট শর্ত পূর্ণ হলে নির্ধারিত মান বা এক্সপ্রেশন রিটার্ন করে। এটি IF-ELSE স্টেটমেন্টের মতো কাজ করে, তবে এর কাঠামোটি একটু ভিন্ন এবং অনেক বেশি পরিষ্কার এবং সোজা।
CASE স্টেটমেন্টের ধরন
PL/SQL-এ CASE স্টেটমেন্ট দুটি প্রধান ধরনের হয়ে থাকে:
- Simple CASE Expression
- searched CASE Expression
১. Simple CASE Expression
এই ধরনের CASE স্টেটমেন্টে একক মানের ভিত্তিতে একাধিক শর্ত পরীক্ষা করা হয়। অর্থাৎ, আপনি একটি নির্দিষ্ট এক্সপ্রেশন বা ভ্যালু দিয়ে শুরু করেন এবং এটি বিভিন্ন মানের সঙ্গে তুলনা করা হয়।
Syntax:
CASE expression
WHEN value1 THEN
-- Code to execute if expression = value1
WHEN value2 THEN
-- Code to execute if expression = value2
...
ELSE
-- Code to execute if expression doesn't match any value
END CASE;
উদাহরণ:
DECLARE
v_grade CHAR(1);
BEGIN
v_grade := 'A';
CASE v_grade
WHEN 'A' THEN
DBMS_OUTPUT.PUT_LINE('Excellent');
WHEN 'B' THEN
DBMS_OUTPUT.PUT_LINE('Good');
WHEN 'C' THEN
DBMS_OUTPUT.PUT_LINE('Average');
WHEN 'D' THEN
DBMS_OUTPUT.PUT_LINE('Poor');
ELSE
DBMS_OUTPUT.PUT_LINE('Invalid Grade');
END CASE;
END;
Output:
Excellent
২. Searched CASE Expression
এই ধরনের CASE স্টেটমেন্টে, একাধিক শর্তের ভিত্তিতে কোন একটি শর্ত পূর্ণ হলে কোড এক্সিকিউট করা হয়। এখানে WHEN ক্লজের মধ্যে শর্ত (condition) দেওয়া হয় এবং সেটা সত্য হলে সাপেক্ষ কোড এক্সিকিউট করা হয়।
Syntax:
CASE
WHEN condition1 THEN
-- Code to execute if condition1 is TRUE
WHEN condition2 THEN
-- Code to execute if condition2 is TRUE
...
ELSE
-- Code to execute if no conditions are TRUE
END CASE;
উদাহরণ:
DECLARE
v_marks NUMBER := 75;
BEGIN
CASE
WHEN v_marks >= 90 THEN
DBMS_OUTPUT.PUT_LINE('Grade A');
WHEN v_marks >= 75 THEN
DBMS_OUTPUT.PUT_LINE('Grade B');
WHEN v_marks >= 50 THEN
DBMS_OUTPUT.PUT_LINE('Grade C');
ELSE
DBMS_OUTPUT.PUT_LINE('Fail');
END CASE;
END;
Output:
Grade B
CASE স্টেটমেন্টের ব্যবহার
- Multiple Conditions Check: যখন একাধিক শর্ত পরীক্ষা করার প্রয়োজন হয়, তখন CASE স্টেটমেন্ট খুবই কার্যকরী। এটি একাধিক
IF-ELSEশর্তের তুলনায় অনেক বেশি পরিষ্কার ও সহজ করে। - Query with CASE: SQL কুয়েরিতে CASE ব্যবহার করে আপনি ডেটাবেস থেকে ভ্যালু রিটার্ন করতে পারেন, যেমনঃ কোনও কলামের মান অনুযায়ী আলাদা ফলাফল দেখানো।
SQL Query Example:
SELECT employee_id, salary,
CASE
WHEN salary > 10000 THEN 'High'
WHEN salary BETWEEN 5000 AND 10000 THEN 'Medium'
ELSE 'Low'
END AS salary_grade
FROM employees;
এই কুয়েরি salary-এর মানের উপর ভিত্তি করে একটি নতুন salary_grade কলাম তৈরি করবে, যা প্রত্যেক কর্মচারীর বেতন অনুযায়ী High, Medium, অথবা Low মান রিটার্ন করবে।
শেষ কথা
CASE স্টেটমেন্ট PL/SQL-এ একটি শক্তিশালী টুল, যা শর্তের উপর ভিত্তি করে লজিক্যাল এক্সপ্রেশন নির্ধারণ করতে ব্যবহৃত হয়। এটি কোডের পড়তে সহজ এবং প্রোগ্রামিংয়ের জটিলতা কমাতে সাহায্য করে। Simple এবং Searched ধরনের মধ্যে থেকে যে কোনও একটির ব্যবহার আপনার পরিস্থিতি অনুযায়ী সঠিক হতে পারে।
PL/SQL-এ লুপ ব্যবহার করা হয় যখন আপনাকে একটি নির্দিষ্ট ব্লক কোড একাধিকবার কার্যকরী করতে হয়। লুপের বিভিন্ন ধরন রয়েছে, যেমন LOOP, WHILE LOOP, এবং FOR LOOP। এগুলির মাধ্যমে আপনি নির্দিষ্ট শর্তে কোড পুনরাবৃত্তি করতে পারেন। প্রতিটি লুপের কাজ করার ধরণ এবং ব্যবহারের ক্ষেত্রে কিছু পার্থক্য রয়েছে।
১. LOOP
LOOP একটি সিম্পল লুপ যা কোনো শর্ত বা সীমা নির্ধারণ না করে নির্দিষ্ট কাজটি একাধিক বার সম্পাদন করতে ব্যবহার করা হয়। এটি সাধারণত EXIT বা EXIT WHEN স্টেটমেন্ট দিয়ে শেষ করা হয়।
সিনট্যাক্স:
LOOP
-- এখানে কোড থাকবে
EXIT WHEN condition; -- এটি শর্ত অনুযায়ী লুপ বন্ধ করবে
END LOOP;
ব্যবহার:
DECLARE
v_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('Iteration: ' || v_counter);
v_counter := v_counter + 1;
-- লুপ 5 বার চলবে
EXIT WHEN v_counter > 5;
END LOOP;
END;
ব্যাখ্যা:
- এই লুপটি v_counter এর মান ৫ পর্যন্ত বৃদ্ধি পাবে এবং প্রতি ইটারেশনে DBMS_OUTPUT.PUT_LINE দ্বারা আউটপুট দেখাবে।
- EXIT WHEN শর্তটি লুপের মধ্যে কাজ করবে এবং শর্ত পূর্ণ হলে লুপ শেষ হবে।
২. WHILE LOOP
WHILE LOOP হল একটি শর্তভিত্তিক লুপ। এটি যখন পর্যন্ত নির্দিষ্ট শর্ত পূর্ণ হবে ততক্ষণ পর্যন্ত কোড একাধিকবার চালিয়ে যাবে। শর্ত যদি প্রথমে FALSE হয়, তাহলে লুপ একবারও কার্যকরী হবে না।
সিনট্যাক্স:
WHILE condition LOOP
-- কোড
END LOOP;
ব্যবহার:
DECLARE
v_counter NUMBER := 1;
BEGIN
WHILE v_counter <= 5 LOOP
DBMS_OUTPUT.PUT_LINE('Iteration: ' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
ব্যাখ্যা:
- এই লুপটি v_counter এর মান ৫ পর্যন্ত বৃদ্ধি পাবে এবং প্রতি ইটারেশনে আউটপুট দেখাবে।
- WHILE শর্তটি প্রতিটি লুপ চালানোর আগে পরীক্ষা করা হবে, এবং যদি শর্ত TRUE থাকে তবে লুপ চলবে।
৩. FOR LOOP
FOR LOOP সাধারণত একটি নির্দিষ্ট সীমার মধ্যে একাধিকবার কোড চালানোর জন্য ব্যবহৃত হয়। এই লুপে সাধারণত শুরুর মান, শেষ মান এবং ইনক্রিমেন্টের মান দেয়া হয়। এটি এক ধরনের সীমাবদ্ধ লুপ যা একটি পূর্বনির্ধারিত পরিসীমার মধ্যে চলবে।
সিনট্যাক্স:
FOR counter IN start_value..end_value LOOP
-- কোড
END LOOP;
ব্যবহার:
BEGIN
FOR v_counter IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('Iteration: ' || v_counter);
END LOOP;
END;
ব্যাখ্যা:
- এই FOR LOOP-টি ১ থেকে ৫ পর্যন্ত সংখ্যা প্রদর্শন করবে।
- লুপটি স্বয়ংক্রিয়ভাবে ১ থেকে ৫ পর্যন্ত কাউন্ট করবে এবং কোনো ইনক্রিমেন্ট বা শর্ত ব্যাখ্যার প্রয়োজন নেই।
LOOP, WHILE LOOP, এবং FOR LOOP এর মধ্যে পার্থক্য:
| লুপ টাইপ | ব্যবহার | শর্ত পরীক্ষা | কোড চলানোর সীমা | উদাহরণ |
|---|---|---|---|---|
| LOOP | কোনো নির্দিষ্ট শর্ত ছাড়া কোড বার বার চালাতে | কোডের মধ্যে EXIT শর্ত থাকতে হবে | কোনো নির্দিষ্ট সীমা নেই | ৫ বার চলানোর জন্য EXIT WHEN |
| WHILE LOOP | শর্তভিত্তিক লুপ, যখন পর্যন্ত শর্ত পূর্ণ হয় | শর্ত প্রথমে পরীক্ষা করা হয় | নির্দিষ্ট শর্তের মধ্যে | যতক্ষণ পর্যন্ত v_counter <= 5 |
| FOR LOOP | নির্দিষ্ট সীমার মধ্যে কোড চালানোর জন্য | লুপের মধ্যে সীমা স্বয়ংক্রিয়ভাবে নির্ধারিত | শুরুর মান থেকে শেষ মান পর্যন্ত | ১ থেকে ৫ পর্যন্ত স্বয়ংক্রিয়ভাবে সংখ্যা |
কোডের মাধ্যমে উদাহরণ:
LOOP উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 3; -- লুপ ৩ বার চলবে
END LOOP;
END;
WHILE LOOP উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
WHILE v_counter <= 3 LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
FOR LOOP উদাহরণ:
BEGIN
FOR v_counter IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
END LOOP;
END;
সারাংশ:
- LOOP লুপে একটি নির্দিষ্ট শর্ত দিয়ে কোড বের করা হয়, যেটি EXIT স্টেটমেন্টের মাধ্যমে শর্ত পূর্ণ হলে শেষ হয়ে যায়।
- WHILE LOOP একটি শর্ত পরীক্ষার মাধ্যমে কাজ করে এবং যতক্ষণ পর্যন্ত শর্ত সত্য থাকে, ততক্ষণ চলতে থাকে।
- FOR LOOP একটি পূর্বনির্ধারিত পরিসীমায় কাজ করে, যেখানে শুরুর মান এবং শেষ মান দেয়া হয় এবং স্বয়ংক্রিয়ভাবে লুপের কাউন্ট হয়।
এগুলি বিভিন্ন পরিস্থিতিতে ব্যবহার করা যায়, এবং আপনার কোডের প্রয়োজন অনুসারে আপনি সঠিক লুপটি নির্বাচন করতে পারেন।
PL/SQL-এ EXIT এবং CONTINUE স্টেটমেন্টগুলি লুপের নিয়ন্ত্রণ পরিচালনার জন্য ব্যবহৃত হয়। এগুলি লুপের ভেতরে ব্যবহৃত হয় এবং লুপের আচরণ পরিবর্তন করতে সাহায্য করে।
১. EXIT স্টেটমেন্ট
EXIT স্টেটমেন্ট ব্যবহার করা হয় লুপের ভিতরে যখন আপনি লুপের কার্যক্রম বন্ধ করতে চান, অর্থাৎ লুপ থেকে বের হয়ে আসতে চান। যখন কোনো নির্দিষ্ট শর্ত পূর্ণ হয়, তখন লুপটি ত্যাগ করতে EXIT স্টেটমেন্ট ব্যবহার করা হয়।
EXIT এর মূল উদ্দেশ্য:
- লুপের কার্যক্রম বন্ধ করা।
- লুপের বাইরে চলে যাওয়া।
EXIT ব্যবহার করার উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
-- LOOP, যা 1 থেকে 5 পর্যন্ত চলবে
LOOP
-- যদি v_counter 3 হয়, তবে লুপ ত্যাগ করা হবে
IF v_counter = 3 THEN
EXIT; -- Looop থেকে বের হয়ে যাবে
END IF;
DBMS_OUTPUT.PUT_LINE('Counter value: ' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
এখানে, v_counter যখন ৩ হয়, তখন EXIT স্টেটমেন্ট লুপটি ত্যাগ করে এবং লুপ শেষ হয়। এর ফলে v_counter এর মান ৩ এর পর কোনো আরো আউটপুট প্রদর্শিত হবে না।
EXIT WHEN এর ব্যবহার:
EXIT WHEN স্টেটমেন্টটি একই কাজ করে, কিন্তু এর মাধ্যমে লুপে শর্ত সরাসরি দেওয়া যায়।
DECLARE
v_counter NUMBER := 1;
BEGIN
-- LOOP, যা 1 থেকে 5 পর্যন্ত চলবে
LOOP
-- v_counter 3 হলে লুপ থেকে বের হয়ে যাবে
EXIT WHEN v_counter = 3;
DBMS_OUTPUT.PUT_LINE('Counter value: ' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
এখানে, EXIT WHEN এর মাধ্যমে শর্তের ভিত্তিতে লুপটি বন্ধ করা হয়েছে।
২. CONTINUE স্টেটমেন্ট
CONTINUE স্টেটমেন্ট ব্যবহার করা হয়, যখন আপনি লুপের বর্তমান ইটারেশন (চক্র) ত্যাগ করতে চান এবং পরবর্তী ইটারেশনে চলে যেতে চান। এটি লুপের মধ্যে শর্ত পরীক্ষা করে, এবং যদি শর্ত সত্য হয়, তবে বাকি অংশটি স্কিপ করে পরবর্তী ইটারেশনে চলে যায়।
CONTINUE এর মূল উদ্দেশ্য:
- একটি লুপের বর্তমান ইটারেশন বাদ দেওয়া।
- পরবর্তী ইটারেশনে চলে যাওয়া।
CONTINUE ব্যবহার করার উদাহরণ:
DECLARE
v_counter NUMBER := 1;
BEGIN
-- LOOP, যা 1 থেকে 5 পর্যন্ত চলবে
FOR v_counter IN 1..5 LOOP
-- যদি v_counter 3 হয়, তবে ঐ ইটারেশনটি স্কিপ হবে
IF v_counter = 3 THEN
CONTINUE; -- ৩ হলে ঐ ইটারেশনটি বাদ দিয়ে পরবর্তী ইটারেশনে চলে যাবে
END IF;
DBMS_OUTPUT.PUT_LINE('Counter value: ' || v_counter);
END LOOP;
END;
এখানে, যখন v_counter ৩ হয়, তখন CONTINUE স্টেটমেন্ট কার্যকর হয় এবং ৩ এর জন্য কোনো আউটপুট প্রদর্শিত হয় না। পরবর্তী ইটারেশন (৪ এবং ৫) চালু হবে।
CONTINUE WHEN এর ব্যবহার:
CONTINUE WHEN স্টেটমেন্টটি একই কাজ করে, কিন্তু এখানে শর্তটি সরাসরি দেওয়া হয়।
DECLARE
v_counter NUMBER := 1;
BEGIN
-- LOOP, যা 1 থেকে 5 পর্যন্ত চলবে
FOR v_counter IN 1..5 LOOP
-- যদি v_counter 3 হয়, তবে ঐ ইটারেশনটি স্কিপ হবে
CONTINUE WHEN v_counter = 3;
DBMS_OUTPUT.PUT_LINE('Counter value: ' || v_counter);
END LOOP;
END;
এখানে, CONTINUE WHEN এর মাধ্যমে শর্ত প্রদান করে, যখন v_counter ৩ হয়, তখন ঐ ইটারেশনটি বাদ দেওয়া হয় এবং পরবর্তী ইটারেশনে চলে যায়।
EXIT এবং CONTINUE এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | EXIT | CONTINUE |
|---|---|---|
| কার্য | লুপ থেকে বের হয়ে আসা (Exit from loop) | বর্তমান ইটারেশন স্কিপ করে পরবর্তী ইটারেশনে যাওয়া |
| ব্যবহার | লুপ বন্ধ করার জন্য | একটি ইটারেশন বাদ দিয়ে পরবর্তী ইটারেশন চালানো |
| লুপের উপর প্রভাব | লুপ সম্পূর্ণভাবে শেষ হয়ে যায় | শুধুমাত্র বর্তমান ইটারেশন শেষ হয়, লুপ চলতে থাকে |
| ব্যবহারিক উদাহরণ | লুপের মধ্যে শর্ত পূর্ণ হলে লুপ ত্যাগ করা | শর্ত পূর্ণ হলে সেই ইটারেশনটি স্কিপ করা |
সারাংশ
- EXIT স্টেটমেন্ট ব্যবহার করে আপনি লুপ থেকে সম্পূর্ণরূপে বের হয়ে আসতে পারেন, যখন নির্দিষ্ট শর্ত পূর্ণ হয়।
- CONTINUE স্টেটমেন্ট ব্যবহার করে আপনি একটি লুপের বর্তমান ইটারেশনটি বাদ দিয়ে পরবর্তী ইটারেশনে চলে যেতে পারেন।
এই স্টেটমেন্টগুলো লুপ নিয়ন্ত্রণে খুবই কার্যকর, বিশেষ করে আপনি যখন একটি নির্দিষ্ট শর্তে লুপের কার্যক্রম সামঞ্জস্য করতে চান।
Read more