Kayıtlar

PL/SQL Ders15 - Exception

Resim
   PL/SQL'de 2 tip exception (istisna) vardır. Bunlar Sistem tabanlı exception Kullanıcı tabanlı exception DECLARE .... BEGIN .... EXCEPTION WHEN ..... THEN .......... WHEN ..... THEN .......... END; Worksheet15.sql DECLARE p_id test_personel . id%TYPE; BEGIN SELECT id INTO p_id FROM test_personel WHERE ad = 'enes22' ; DBMS_OUTPUT . put_line (p_id); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT . put_line ( 'veri bulunamadi..' ); WHEN OTHERS THEN DBMS_OUTPUT . put_line ( 'bir hata var..' ); END ; Raising Exceptions (Kullanıcı Tabanlı) Istisnalar veri tabanında dahili bir hata meydana geldiğinde otomatik olarak oluşturulur. Fakat programcı tarafından RAISE komutuyla da explicit (açık) bir şekilde istisna tanımlanabilir. Bir istisna tanımlamasını ve o istisnanın meydana gelmesi durumda yapılacakları gösteren genel kod bloğu aşğıdaki gibidir.

PL/SQL Ders14 - Cursor

Resim
   SQL ifadesi işlendiğinde Oracle context area denilen bir bellek bölgesi oluşturur. Bir cursor işte bu bellek bölgesine işaret eder. Cursor ifadenin işlenmesi için gerekli tüm bilgileri içerir. PL/SQL'de context area, cursor tarafından kontrol edilir. Cursor veri satırlarını ve select ifadeleri üzerindeki bilgileri içerir. Bir cursor SQL ifadeleri ile döndürülen saturları işlemek , fetch etmek (getirmek) için kullanılır. İki tip cursor vardır. Implicit Cursor (örtülü) Explicit Cursor (açık) Implicit Cursor (örtülü) Implicit Cursor (örtülü) Oracle tarafından  SQL ifade çalıştırıldığında eğer explicit cursor (açık) kullanılmıyorsa otomatik olarak oluşturulur. INSERT, UPDATE, DELETE gibi DML ifadeleri çalıştırıldığında Oracle tarafından oluşturulan attributeler şunlardır. %FOUND : Eğer DML ifadelerinden oluşturulan komutlardan etkilenen bir satır varsa veya select ifadelerinden oluşturulan komutlardan geriye dönen en az bir satır varsa geriye true dönd

PL/SQL Ders13 - Function

Resim
   PL/SQL'de fonksiyonlar (function) prosedürlere (procedure) çok benzemektedir. Fonksiyonlar da bir veya daha fazla görevi icra edecek yapılar olarak tanımlanabilir. Fonksiyonlar ile prosedürler arasındaki fark ise fonksiyonlar her zaman geriye bir değer döndürmek zorundadır. Prosedürlerde ise bu zorunluluk yoktur. Function oluşturma CREATE FUNCTION  "functionIsmi"  (varsa parametreler,..) RETURN donusTipi; IS declaration kısmı BEGIN execution kısmı RETURN deger; END; CREATE  yerine  REPLACE  anahtar kelimesi ile var olan bir function güncellenebilir. Function silme DROP  FUNCTION   procedureIsmi; Function13.sql CREATE OR REPLACE FUNCTION dortgen (satir IN INT, sutun IN INT) RETURN INT IS yildizSayisi INT; BEGIN FOR i IN 1 .. satir LOOP FOR j IN 1 .. sutun LOOP dbms_output . put( '*' ); END LOOP ; dbms_output . put( ' ' ||chr( 10 )); END LOOP ;

PL/SQL Ders12 - Procedure

Resim
   PL/SQL'de bir veya daha fazla görevi icra edecek yapılara procedure denir. Procedure header ve body olmak üzere iki kısımdan meydana gelir. Header kısmında procedure ismi, procedure parametreleri bulunur. Body kısmında genel PL/SQL bloklarına benzer olarak declaratin kısmı, execution kısmı ve exception handling kısmı bulunur. Yani yapılacak iş burada belirtilir. Bir procedure oluşturmak isterseniz bu procedure geçirilecek parametreleri tanımlamak zorundasınızdır. Bir procedurede 3 tip parametre bulunur. IN parametreleri procedure tarafından işleme sokulacak parametrelerdir. Procedure dışında kullanılamaz. OUT parametreleri  procedure tarafından işlem sonucundan elde edilecek parametrelerdir. Procedure dışında kullanılabilir. INOUT parametreleri  procedure tarafından işleme sokulup değeri değişebilecek parametrelerdir. Procedure dışında kullanılabilir. Procedure oluşturma CREATE PROCEDURE "procedureIsmi" (varsa parametreler,..) IS declaratio

PL/SQL Ders11 - GOTO Deyimi

Resim
   PL/SQL'de GOTO deyimi kod satırları arasında atlama yapmak için kullanılır. GOTO deyimi ile daha önce tanımlanan LABEL'e atlanır. ... << a >> ... GOTO a; ... GOTO Deyiminin Kısıtlamaları GOTO  deyimiyle bir IF koşulunun, CASE durumunun, LOOP ifadelerinin veya alt blokların içine atlayamazsınız. GOTO  deyimiyle bir  IF   koşulunun içinden diğer bir  IF   koşulunun içine atlayamazsınız. Aynı koşul  CASE  durumunda WHEN' ler arasında da yapılamaz. GOTO  deyimiyle bir dış bloktan iç bloka atlayamazsınız. GOTO  deyimiyle bir alt programdan çıkmak için atlama yapılamaz. GOTO  deyimiyle exception handler içine atlayamazsınız. Worksheet11.sql DECLARE i INT := 0 ; BEGIN <<test>> WHILE i < 100 LOOP i := i + 10 ; IF i = 80 THEN GOTO test; END IF ; DBMS_OUTPUT . put_line (i); END LOOP ; END ;

PL/SQL Ders10 - CONTINUE Deyimi

Resim
   PL/SQL'de  CONTINUE ifadesi bir döngü içerisinde kullanılır. Döngü içerisinde kullanılan  CONTINUE ifadesi  CONTINUE 'nun altında kalan satırlar icra edilmeden bir sonraki iterasyona geçilmesini sağlar. ... CONTINUE; ...    Örneğin aşağıdaki programdaki döngü 1'den 10'a kadar yazdıracak şekilde ayarlanmıştır. Fakat 7 sayısı yazdırılacakken CONTINUE deyimiyle 7 yazdırılmadan diğer iterasyona geçilmesi sağlanmıştır. Ayrıca 3 ile 5 arasındaki sayılar ikinci IF koşulu ile ikişer kez yazdırılacaktır. Worksheet10.sql DECLARE BEGIN FOR i IN 1..10 LOOP IF i= 7 THEN continue ; ELSIF i BETWEEN 3 AND 5 THEN dbms_output . put_line(i|| ' ' || i); ELSE dbms_output . put_line(i); END IF ; END LOOP ; END ;

PL/SQL Ders09 - Döngüler | FOR

Resim
   PL/SQL'de FOR döngüsü şu şekilde tanımlanır. FOR  değişken IN başlangıçDegeri .. bitişDegeri LOOP koşul doğru olduğu sürece çalışacak ifadeler END LOOP; Worksheet09.sql DECLARE BEGIN FOR a in 1..10 LOOP dbms_output . put_line(a); END LOOP ; END ;