VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş

Slides:



Advertisements
Benzer bir sunumlar
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Advertisements

MIT504 İnternet ve Web Programlama: Javascript programlama devam Yrd. Doç. Dr. Yuriy Mishchenko.
DÖNGÜ İFADELERİ.
PL/SQL üzerinden Web Sayfası üretmek
SQL (Structured Query Language)
VERİ TABANI YÖNETİMİ Ders 10: Oracle Nesneleri
SQL de Değişken Tanımlama
4. KONTROL VE DÖNGÜ KOMUTLARI
Alt Sorgular Veritabanı 2.
Veri Tabanı Yönetim Sistemleri
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
T-SQL-2.Konu Akış Kontrolleri.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
MySQL, SQL ve PHP Öğr.Gör.Şükrü KAYA.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
SQL de Değişken Tanımlama
Döngü Yapıları.
MySQL Operatörleri ve Fonksiyonları
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Kontrol Yapıları ve Döngüler
Veri Tabanı Yönetim Sistemleri 2 Ders 4 Oracle'da VT Nesneleri Yaratma
SQL Komutları (2) Uzm. Murat YAZICI.
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 2 Oracle 11g Kurulumu
4. KONTROL VE DÖNGÜ KOMUTLARI
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Bölüm 4: İleri SQL.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Veri Tabanı Yönetim Sistemleri 2 Ders 6 PL/SQL Ek Bilgiler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş, Prosedür ve Fonksiyonlar Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Veri Tabanı Yönetim Sistemleri 2 Ders 7 Paket ve Tetikleyiciler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü.
 Stored Procedure kısaca SQL sorgularını isteğimize göre hazırlayıp kullanıma hazır veri tabanı nesnesine çeviren bir araçtır.  Stored Procedure, Türkçeye.
Bilgisayar Mühendisliği Bölümü
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 6 PL/SQL Ek Bilgiler
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
14.DERS Örnekler, Sorular BUKET DOĞAN.
5. HAFTA Öğr. Gör. Yunus KÖKVER
Excel’de VBA Programlama (Visual Basic Application)
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
DML ile veri ekleme, silme ve değiştirme
FONKSİYONLAR İbrahim Onur Sığırcı.
Veri Tabanı Yönetim Sistemleri 2 Ders 7 Paket ve Tetikleyiciler
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Stored Procedures
Transaction.
Sunum transkripti:

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

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) . PL: Procedural Language

Blok Tipleri Anonim Prosedür Fonksiyon

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

PL/SQL Bloğu Örneği Değişkene SELECT ile değer atama 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 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.

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 1..500 LOOP INSERT INTO roots VALUES (num, SQRT(num));

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.

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;

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;

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

%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;

Ö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'); END; 7499 numaralı çalışanın yöneticisinden başlayıp üst yöneticilere doğru arama yapan döngü, maaşı 2500 yada daha fazla olan ilk yöneticiyi bulduğu zaman sonlanır. Bulunan yöneticinin maaşı ve soyadı temp tablosuna eklenir. Bulunamaz ise maaş NULL olarak, soyad ise ‘Not found’ olarak eklenir.

Ö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 END IF; EXCEPTION WHEN comm_missing THEN... END award_bonus; “award_bonus” prosedürü, parametre olarak aldığı çalışan numarası ile o çalışanın komisyon miktarını bularak, bu komisyon miktarının %15’ini bonus değişkenine atar. Eğer komisyon (comm) NULL ile, bonus değişkeni de NULL olur ve işlem yapılmadan hata bloğuna gidilir. Eğer komisyon NULL değilse çalışanın ücret bordrosundaki (payroll tablosu) ödeme (pay) alanı bonus kadar arttırılır.