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 একটি পূর্বনির্ধারিত পরিসীমায় কাজ করে, যেখানে শুরুর মান এবং শেষ মান দেয়া হয় এবং স্বয়ংক্রিয়ভাবে লুপের কাউন্ট হয়।
এগুলি বিভিন্ন পরিস্থিতিতে ব্যবহার করা যায়, এবং আপনার কোডের প্রয়োজন অনুসারে আপনি সঠিক লুপটি নির্বাচন করতে পারেন।