IF operatorining umumiy ko’rinishi quyidagicha:
IF shart1 then
Operatorlar1; - - birinchi tarmoq.
[ elseif shart2
Then
Operatorlar2 ] ; - - ikkinchi tarmoq.
…
Else
Operatorlarn; ] - - alternative tarmoq.
End if
IF operatorini shartlarning soniga ko’ra quyidagicha 2 turga ajratish mumkin:
1.Dasturda 1 ta shart qatnashgan holda
IF shart then
Operatorlar
End if;
2.
IF_THEN_ELSE konstruksiyasi
IF shart then
Operatorlar;
Else
Operatorlar;
End if;
CASE operatori
CASE o’zgaruvchi
When ifoda1 then qiymat1;
When ifoda2 then qiymat2;
When ifoda3 then qiymat3;
Else qiymat;
End [case];
Protseduralarda case operatorining qo’llanilishi:
create or replace procedure searched_case
(p1 in number) is
v_switch char(1);
BEGIN
v_switch :=
CASE
WHEN p1 = 1 THEN 'A'
WHEN p1 = 2 THEN 'B'
WHEN p1 = 3 THEN 'C'
END;
dbms_output.put_line(v_switch);
END;
LOOP sikl operatorlari. While loop.
Bunda EXIT WHEN konstruksiyasi sikldan chiqishni taminlab beradi.
Faktoriali 100 000 dan kichik bo’lgan eng katta son topilsin.
SQL> DECLARE
2. arg NUMBER; - - factorial hisoblash uchun o’zgaruvchi.
3. I number; - - schotchik.
4. limit NUMBER:=100 000;
5. text VARCHAR(100):=’100 000 dan kichik 1-son’;
6. - - bajariluvchi
7. begin
8. i:=0;
9. arg:=1’
10. LOOP
11. EXIT WHEN arg>limit
12. arg:=arg*(i+1);
13. i:=i+1;
14. end loop;
15. dbms_output.put_line(text1);
16. dbms_output.put_line(TO_CHAR(arg));
17. dbms_output.put_line(‘qidirilayorgan son’||TO_CHAR(i));
18 end
19 /
While loop operatorining umumiy ko’rinishi
While shart loop
Operator1;
Operator2;
…
End loop;
For loop sikl operatori
FOR operatori sikllar soni oldindan ma’lum bo’lgan holda ishlatiladi.
SQL> declare
2 x number := 0;
3 begin
4 <>
5 LOOP
6 dbms_output.put_line('loop a');
7 <>
8 LOOP
9 dbms_output.put_line('loop b');
10 x := x + 1;
11 EXIT a WHEN x = 2;
12 END LOOP b;
13 END LOOP a;
14 end;
15 /
loop a
loop b
loop b
PL/SQL procedure successfully completed.
Bu operatorni umumiy ko’rinishi quyidagicha:
FOR sikl schotchigi IN [REVERSE]
Quyi chegara …yuqori chegara LOOP
Operatorlar ketma-ketligi
END LOOP;
Ushbu ko’rinishda sikl schotchigi oshkormas holda yaratiladigan indeksli o’zgaruvchi.
Quyi chegara va yuqori chegara iteratsiyalar sonini ko’rsatadi. Operatorlar ketma-ketligi sikl mazmunini yoki sikl tanasini tashkil qiladi. Sikl chegaralari bir marta hisoblanib umumiy qaytarilishlar sonini aniqlaydi. Schotchik quyi chegaradan yuqori chegaragacha 1 qo’shib o’zgaradi.
Sikl schotchigi oshkormas holda binary_integer toifasida deb e’lon qilinadi.
Sikldan oldin uni e’lon qilish shart emas.
1 dan 100 gacha bo’lgan natural sonlarni yozish dasturini tuzing.
Begin
For v_counter in 1…100 LOOP
Insert into temp_table
Values(v_counter);
END LOOP;
END;l
Agar FOR siklida REVERSE kalit so’zi ishlatilsa tartiblash teskari holatda, sikl indeksini yuqori chegarasidan pastki chegarasiga o’zgaradi.
SQL> create table t (c1 number);
Table created.
SQL> begin
2 for x in 1..100 loop
3 insert into t values(x);
4 end loop;
5 commit;
6* end;
SQL> /
PL/SQL procedure successfully completed.
Do'stlaringiz bilan baham: |