Merhabalar bu yazıda PL/SQL Programlama da akış öperatörleriyle devam ediyoruz, henüz ilk yazılara bakmadıysanız buradan ulaşabilirsiniz.
PL/SQL’de IF-ELSE gibi yapılar birçok programlama dilleriyle benzerdir. En basit şekli ile ifade etmek gerekecek olursak bir şartın istene bir durumda TRUE istenmeyen veya farklı bir sonuç beklenen durumda FALSE değerinin dönmesiyle sonuçlanır.
IF-THEN YAPISI:
Temel olarak koşulun yer aldığı IF-THEN söz dizimi ve sonrasında çalışacak kod bloğu yer alır. IF-THEN yapısı kodun çalışmasından sonra END-IF bloğu ile kapatılır
IF koşul THEN
PL/SQL Kodu;
……..
…….
END IF;
SQL>set serveroutput on; DECLARE sayi1 NUMBER:=5; sayi2 NUMBER:=2; fark NUMBER; BEGIN IF sayi1>sayi2 THEN fark:=sayi1-sayi2; END IF; DBMS_OUPUT.PUT_LINE('SAYI1 = '||sayi1); DBMS_OUPUT.PUT_LINE('SAYI2 = '||sayi2); DBMS_OUPUT.PUT_LINE('FARK = '||fark); END; /
IF-THEN-ELSE:
Bu yapı az öncekine ek olarak ELSE bloğu içermekte. IF-THEN kısmında koşul sağlanmadığında çalışacak olan kodların yer aldığı bloktur. Örnek üzerinden açıklamak en öğretici olacaktır
DECLARE sayi1 NUMBER:=10; sayi2 NUMBER:=5; sonuc NUMBER: BEGIN IF sayi1<sayi2 THEN sonuc:=sayi1+sayi2; ELSE sonuc:=sayi1*sayi2; END IF; DBMS_OUTPUT.PUT_LINE('Sonuç : '||sonuc); END; /
IF-THEN-ELSIF:
Yine az öncekine benzer mantıkta çalışan bir blok yapısı ancak burda tek ELSE yapısı yerine birden fazla olası durum sonuçlanmak istenmesi durumunda kullanılabilecek blok yapısı.
DECLARE sayi1 NUMBER:=5; sayi2 NUMBER:=4; sayi3 NUMBER:=3; sonuc NUMBER; BEGIN IF sayi1<sayi2 THEN sonuc:=sayi1+sayi2; ELSEIF sayi2<sayi3 THEN sonuc:=sayi2+sayi3; ELSEIF sayi3<sayi2 THEN sonuc:=sayi3*sayi3; ELSE sonuc:=0; END IF; DBMS_OUTPUT.PUT_LINE('Sonuç = '||sonuc); END; /
Ben örnekleri çok basit şekilde anlatmaya çalıştım ancak IF-THEN vb yapılarda karmaşık sorgular veya DML,DDL işlemleri yapılabilir. Herhangi bir koşul sağlandığında bir tablo UPDATE edilebilir veya sağlanmadığında farklı bir INSERT girilebilir. Bunun gibi örnekleri çoğaltmak mümkün.
Bu yazı’yı burada bırakalım bir sonraki yazı da CASE-WHEN ve nested IF-THEN yapılarına bakıyor olacağız, görüşmek üzere..