Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.

Benzer bir sunumlar


... konulu sunumlar: "VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği."— Sunum transkripti:

1 VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği

2 PL/SQL PL/SQL ile ilgili özet bilgiyi Ders 9 – Slayt 22’de bulabilirsiniz. Bir PL/SQL bloğunun öncesinde eğer gerekli ise değişkenlerin tanımlanabileceği bir tanımlama kısmı, bloğun sonunda ise eğer gerekli ise bir hata işleme kısmı bulunur (END; öncesinde verilmelidir).

3 Blok Tipleri Anonim Prosedür Fonksiyon

4 Değişken Tanımlama Değişkene blok içinde değer atarken de := operatörü kullanılır. Sentaks: Örnekler:

5 PL/SQL Bloğu Örneği DECLARE qty_on_hand NUMBER(5); BEGIN SELECT quantity INTO qty_on_hand FROM inventory WHERE product = 'TENNIS RACKET‘ FOR UPDATE OF quantity; IF qty_on_hand > 0 THEN -- check quantity UPDATE inventory SET quantity = quantity - 1 WHERE product = 'TENNIS RACKET'; INSERT INTO purchase_record VALUES ('Tennis racket purchased', SYSDATE); ELSE INSERT INTO purchase_record VALUES ('Out of tennis rackets', SYSDATE); END IF; COMMIT; END; Değişkene SELECT ile değer atama Tek satır açıklamalarda --, çok satır açıklamalarda ise /* ve */ kullanılır NOT: IF-koşul-THEN-ifade-ELSE-ifade-END IF yapısı dışında, çok koşullu ifadeler için CASE-WHEN-koşul-THEN-ifade- WHEN-koşul-THEN-ifade-…-END CASE yapısı da vardır.

6 FOR Döngüsü Tüm programlama dillerinde en çok kullanılan döngü ifadesi olan For döngüsünün, PL/SQL’de kullanımı aşağıdaki gibidir: FOR değer IN baslangiç..bitiş LOOP … işlemler … END LOOP; Örnek: FOR num IN LOOP INSERT INTO roots VALUES (num, SQRT(num)); END LOOP;

7 WHILE Döngüsü WHILE koşul LOOP … işlemler … [EXIT WHEN koşul] END LOOP; EXIT-WHEN ifadesi FOR döngüsünde de kullanılabilir. İstenirse FOR veya WHILE yazılmadan, düz bir LOOP … END LOOP döngüsü yaratılabilir. Bu döngüden çıkmak için EXIT-WHEN kullanımı şarttır.

8 Cursor Bir sorgu sonucunda birçok kayıt elde edilmişse, bu kayıtları sıra ile işlemek için Cursor yapısı kullanılır. Programlama dillerinde kullanılan recordset (resultset) yapısına benzerdir. DECLARE CURSOR c1 IS SELECT empno, ename, job FROM emp WHERE deptno = 20;

9 FOR Döngülerinin Cursor ile kullanımı DECLARE CURSOR c1 IS SELECT ename, sal, deptno FROM emp;... BEGIN FOR emp_rec IN c1 LOOP... sal_total := sal_total + emp_rec.sal; END LOOP; END;

10 Hata İşleme DECLARE... comm_missing EXCEPTION; -- declare exception BEGIN... IF commission IS NULL THEN RAISE comm_missing; -- raise exception END IF; bonus := (salary * 0.10) + (commission * 0.15); EXCEPTION WHEN comm_missing THEN process the exception

11 %TYPE ve %ROWTYPE Eğer bir değişkenin tanımı verilirken, veritabanı tablolarından birindeki bir niteliğin veri türünde olması isteniyorsa %TYPE kullanılır: değişken_adı tablo_adı.sütun_adı%TYPE; Eğer bir nitelik değil de bir tablo yada cursor’daki bir kayıt söz konusu ise %ROWTYPE kullanılır: dept_rec dept%ROWTYPE; Kaydın alanlarına ulaşmak için nokta notasyonu kullanılır: my_deptno := dept_rec.deptno;

12 Örnek 1 DECLARE salary emp.sal%TYPE := 0; mgr_num emp.mgr%TYPE; last_name emp.ename%TYPE; starting_empno emp.empno%TYPE := 7499; BEGIN SELECT mgr INTO mgr_num FROM emp WHERE empno = starting_empno; WHILE salary <= 2500 LOOP SELECT sal, mgr, ename INTO salary, mgr_num, last_name FROM emp WHERE empno = mgr_num; END LOOP; INSERT INTO temp VALUES (NULL, salary, last_name); COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO temp VALUES (NULL, NULL, 'Not found'); COMMIT; END;

13 Örnek 2 PROCEDURE award_bonus (emp_id NUMBER) IS bonus REAL; comm_missing EXCEPTION; BEGIN SELECT comm * 0.15 INTO bonus FROM emp WHERE empno = emp_id; IF bonus IS NULL THEN RAISE comm_missing; ELSE UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id; END IF; EXCEPTION WHEN comm_missing THEN... END award_bonus;


"VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği." indir ppt

Benzer bir sunumlar


Google Reklamları