Oracle'de koşul yapısı aşağıdaki gibidir :
IF kosul THEN
-- if içi
ELSIF
-- else if içi
ELSIF
-- else if içi
ELSE
-- else içi
END IF;
Aşağıda basit bir örnek görülmektedir:
declare
number1 NUMBER(11,2) := 2.22;
BEGIN
IF number1 > 5 THEN
dbms_output.put_line('5 den buyuk');
ELSIF number1 > 3 THEN
dbms_output.put_line('3 den buyuk');
ELSIF number1 > 1 THEN
dbms_output.put_line('1 den buyuk');
ELSE
dbms_output.put_line('1 den kucuk');
END IF;
END;
/
Yukarıdaki script output'a 1 den buyuk ifadesini yazacaktır
Oracle'da case'li koşul yapısı aşağıdaki gibidir:
CASE koşul
WHEN deger1 THEN
-- deger 1 kodlari
WHEN deger2 THEN statements_2
-- deger 2 kodlari
WHEN degern THEN
-- deger n kodlari
ELSE
-- deger geri kalan kodlari
END CASE;
ELSE kullanılmak zorunda değildir.
Aşağıda basit bir kullanımı görülmektedir :
DECLARE
grade CHAR(1) := 'B';
BEGIN
CASE grade
WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent');
WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good');
WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');
WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair');
WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor');
ELSE DBMS_OUTPUT.PUT_LINE('No such grade');
END CASE;
END;
/
Oracle'de döngü yapmak için Loop kullanılır. Genel yapısı aşağıdaki gibidir :
LOOP
-- dongu içi
END LOOP;
En basit loop EXIT ifadesi ile kullanılır :
LOOP
-- dongu içi
EXIT;
END LOOP;
Aşağıdaki örnek tek bir sefer çalışan bir döngüdür :
DECLARE
BEGIN
LOOP
-- dongu içi
DBMS_OUTPUT.PUT_LINE('Hello LOOP EXIT');
EXIT;
END LOOP;
END;
/
EXIT koşulda eklenebilir :
LOOP
-- dongu içi
EXIT WHEN Kosul;
END LOOP;
Aşağıda 1'den 10'a kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
i NUMBER := 1;
BEGIN
LOOP
EXIT WHEN i>10;
DBMS_OUTPUT.PUT_LINE(i);
i := i+1;
END LOOP;
END;
/
While ile Loop kullanıldığı yapı aşağıdaki gibidir :
WHILE Kosul LOOP
-- dongu içi;
END LOOP;
Aşağıda 1'den 10'a kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
i NUMBER := 1;
BEGIN
WHILE i<=10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i := i+1;
END LOOP;
END;
/
For ile Loop kullanıldığı yapı aşağıdaki gibidir :
FOR counter IN ilkdeger..sonuncudeger LOOP
statements;
END LOOP;
Aşağıda 1'den 500'e kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
BEGIN
FOR num IN 1..500 LOOP
DBMS_OUTPUT.PUT_LINE(num);
END LOOP;
END;
/
REVERSE ile ters döngü kurulabilir
FOR counter IN REVERSE ilkdeger..sonuncudeger LOOP
statements;
END LOOP;
500 dan 1 e aşağıdaki gibi basılabilir :
DECLARE
BEGIN
FOR num IN REVERSE 1..500 LOOP
DBMS_OUTPUT.PUT_LINE(num);
END LOOP;
END;
/
Oracle'de döngü yapmak için Loop kullanılır. Genel yapısı aşağıdaki gibidir :
LOOP
-- dongu içi
END LOOP;
En basit loop EXIT ifadesi ile kullanılır :
LOOP
-- dongu içi
EXIT;
END LOOP;
Aşağıdaki örnek tek bir sefer çalışan bir döngüdür :
DECLARE
BEGIN
LOOP
-- dongu içi
DBMS_OUTPUT.PUT_LINE('Hello LOOP EXIT');
EXIT;
END LOOP;
END;
/
EXIT koşulda eklenebilir :
LOOP
-- dongu içi
EXIT WHEN Kosul;
END LOOP;
Aşağıda 1'den 10'a kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
i NUMBER := 1;
BEGIN
LOOP
EXIT WHEN i>10;
DBMS_OUTPUT.PUT_LINE(i);
i := i+1;
END LOOP;
END;
/
While ile Loop kullanıldığı yapı aşağıdaki gibidir :
WHILE Kosul LOOP
-- dongu içi;
END LOOP;
Aşağıda 1'den 10'a kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
i NUMBER := 1;
BEGIN
WHILE i<=10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i := i+1;
END LOOP;
END;
/
For ile Loop kullanıldığı yapı aşağıdaki gibidir :
FOR counter IN ilkdeger..sonuncudeger LOOP
statements;
END LOOP;
Aşağıda 1'den 500'e kadar sayıları ekrana basan bir örnek görülmektedir :
DECLARE
BEGIN
FOR num IN 1..500 LOOP
DBMS_OUTPUT.PUT_LINE(num);
END LOOP;
END;
/
REVERSE ile ters döngü kurulabilir
FOR counter IN REVERSE ilkdeger..sonuncudeger LOOP
statements;
END LOOP;
500 dan 1 e aşağıdaki gibi basılabilir :
DECLARE
BEGIN
FOR num IN REVERSE 1..500 LOOP
DBMS_OUTPUT.PUT_LINE(num);
END LOOP;
END;
/
Loop döngüsünde akışı aşağıda kontrollerle değiştirebilirsiniz :
- EXIT : Döngüyü hemen sonlandırır
- CONTINUE : Döngüde devamı atlanıp bir sonraki adıma geçilmesini sağlar
- GOTO : Etiket (label) koyulmuş bir yere atlamayı sağlar