Bilgisayar Mühendisliği Bölümü

Slides:



Advertisements
Benzer bir sunumlar
T sql-diğer komutlar Metin Akbulut.
Advertisements

SQL (Structured Query Language)
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
VERİ TABANI ve YÖNETİMİ
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.
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
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.
SQL (STRUCTURED QUERY LANGUAGE)
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 Dili ve MySQL Komutları
SQL de Değişken Tanımlama
VeriTabanı Uygulama.
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
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
SQL’ e Giriş Uzm. Murat YAZICI.
Bölüm 4: İleri SQL.
SİSTEM VERİTABANLARI. Sistem veritabanlarını tanıma. Kendi Login’imizi oluşturma Neler İşleyeceğiz?
Update UPDATE tablo_ismi SET sutun1=‘deger1’ WHERE sutun=deger.
CA VISUAL OBJECTS ORACLE, MS SQL & MY SQL BAĞLANTıSı Suat ÇELİK Mak. Yük. Müh İskenderrun, © Suat ÇELİK.
Yeni Veritabanı Oluşturma
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ı.
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
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ü.
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ü
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 6 PL/SQL Ek Bilgiler
© 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
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetim Sistemleri 2 Ders 4 Oracle'da VT Nesneleri Yaratma
TETİKLEYİCİLER ve HATA KONTROLÜ
14.DERS Örnekler, Sorular BUKET DOĞAN.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Excel’de VBA Programlama (Visual Basic Application)
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
© 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ı.
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
SQL (STRUCTURED QUERY LANGUAGE)
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
SQL Server - Stored Procedures
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-4-DML
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

Bilgisayar Mühendisliği Bölümü Veri Tabanı Yönetim Sistemleri 2 Ders 6 Ek Bilgiler: Merge, Type, Array, Cursor ve Dinamik SQL Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü

MERGE Kaynak ve hedef tablolarda eşleşen değerler varsa hedef tablodaki değerleri güncelleyen, yoksa hedef tabloya yeni değer olarak ekleyen DML komutudur. MERGE INTO art a USING items i ON (a.id = i.item_id) WHEN MATCHED THEN UPDATE SET a.artist = i.artist, a.description = i.description WHEN NOT MATCHED THEN INSERT VALUES(i.item_id, i.title, i.artist, i.description); Database Programming with PL/SQL, Section 3, Lesson 1, Review of SQL DML

TYPE Nesne Yönelik Programlama dillerinde kullanılan nesnelere benzer PL/SQL yapısı CREATE TYPE … AS OBJECT ile oluşturulur: CREATE TYPE address_typ AS OBJECT ( street VARCHAR2(30), city VARCHAR2(20), postal_code VARCHAR2(6) ); Bir nesne tanımı içinde başka bir nesne kullanılabilir: CREATE TYPE employee_typ AS OBJECT ( employee_id NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(25), .. address address_typ ); CREATE TABLE employees OF employee_typ; şeklinde tablo oluşturulabilir.

Diziler VARRAY türünde TYPE ile oluşturulur CREATE TYPE Phone_List_Type AS VARRAY(5) OF VARCHAR2(25) DECLARE type namesarray IS VARRAY(5) OF VARCHAR2(10); type grades IS VARRAY(5) OF INTEGER; names namesarray; marks grades; total integer; BEGIN names := namesarray('Ali', 'Pınar', 'Ayhan', 'Veli'); marks := grades(98, 97, 78, 87); total := names.count; dbms_output.put_line('Total '|| total || ' Students'); FOR i in 1 .. total LOOP dbms_output.put_line('Student: ' || names(i) || ' Marks: ' || marks(i)); END LOOP; END; NOT: VideoRental.sql scriptinde TYPE içinde FUNCTION kullanımını da inceleyiniz.

Cursor'lar: Implicit & Explicit Önceki derslerde bahsedilen Cursor hakkında biraz daha ayrıntılı bilgi vermek gerekirse, cursor aslında sorgu sonucunun saklandığı alana bir isim verilmesi veya bu alanı gösteren bir pointer gibi düşünülebilir. Database Programming with PL/SQL, Section 5, Lesson 1'e göre iki tip Cursor'un tanımı şu şekildedir: Implicit Cursor: Tüm DML işlemleri için ve tek satır döndüren sorgular için ORACLE tarafından otomatik olarak tanımlanır. Explicit Cursor: Programcı tarafından çok satır döndüren sorguların saklanması için tanımlanır. Bazı kaynaklara göre çok satır döndüren bir sorgu eğer FOR döngüsü tanımında cursor olarak tanımlanmadan (isim verilmeden) kullanıldıysa, bu da bir Implicit Cursor kullanımıdır.

Implicit Cursor FOR döngüsü: BEGIN FOR kayit IN ( SELECT * FROM Personel WHERE "BÖLÜM" = 10 ORDER BY Soyad) LOOP DBMS_OUTPUT.put_line ( kayit.Ad || ' ' || Kayit.Soyad); END LOOP; END; Önceki dersimizde FOR döngüsünü adım sayısı bilinen bir işlem için FOR num IN 1..500 LOOP şeklinde kullanmıştık. Buradaki kullanım For Each döngüsüne benzer şekilde kayıt sayısını bilmemize gerek kalmadan tüm kayıtlar için çalışır.

Explicit Cursor FOR döngüsü: DECLARE CURSOR c1 IS SELECT * FROM Personel WHERE "BÖLÜM" = 10 ORDER BY Soyad; BEGIN FOR kayit IN c1 LOOP DBMS_OUTPUT.put_line ( kayit.Ad || ' ' || Kayit.Soyad); END LOOP; END;

FETCH kullanımı DECLARE CURSOR c1 IS SELECT Ad, Soyad FROM Personel WHERE "BÖLÜM" = 10 ORDER BY Soyad; Ad Personel.Ad%TYPE; Soyad Personel.Soyad%TYPE; BEGIN OPEN c1; LOOP FETCH c1 INTO Ad, Soyad; EXIT WHEN c1%NOTFOUND; DBMS_OUTPUT.put_line ( Ad || ' ' || Soyad); END LOOP; END; Cursor'lar ile çalışırken FOR döngüsü kullanmak yerine FETCH ile kayıtlar tek tek çekilebilir. Fakat bunun için önce Cursor'u Open ile açmak gerekir. Cursor sorgusunda elde edilen tüm alanlar için değişkenler tanımlamak ta gerekir. Sona geldiğimizi anlayıp döngüden çıkmak için %NOTFOUND özelliğini kullanabiliriz.

Cursor Özellikleri (Attributes) Description %FOUND Eğer bir INSERT, UPDATE veya DELETE ifadesi bir yada daha çok satırı etkilediyse veya bir SELECT INTO ifadesi bir yada daha çok satır döndürdüyse TRUE döndürür. %NOTFOUND %FOUND'un mantıksal tersidir. DML işleminde herhangi bir satır etkilenmediyse veya sorguda döndürülmediyse TRUE döndürür. %ISOPEN Cursor açık ise TRUE döndürür. Implicit Cursor'larda hep FALSE döndürür (çünkü Oracle ilgili SQL ifadesini yürüttükten sonra otomatik olarak Cursor'u kapatır). %ROWCOUNT INSERT, UPDATE veya DELETE ifadelerinden etkilenen, veya SELECT INTO ifadesinden dönen satır sayısını döndürür.

Execute Immediate ile Dinamik Sorgular Sorgunun yazıldığı ve derlendiği anda sorgunun parse edilmesi için gerekli bilgilerin tamamı yoksa, bu bilgilerin bir kısmı çalışma anında (runtime) elde ediliyorsa bu tip sorgulara dinamik sorgular denir. ORACLE'da EXECUTE IMMEDIATE ifadesi ile sorgunun dinamik olarak çalıştırılması mümkündür.

EXECUTE IMMEDIATE Örneği CREATE OR REPLACE FUNCTION single_number_value ( table_in IN VARCHAR2, column_in IN VARCHAR2, where_in IN VARCHAR2) RETURN NUMBER IS l_return NUMBER; BEGIN EXECUTE IMMEDIATE 'SELECT ' || column_in || ' FROM ' || table_in || ' WHERE ' || where_in INTO l_return; RETURN l_return; END; BEGIN DBMS_OUTPUT.put_line ( single_number_value ( 'employees', 'salary', 'employee_id=138')); END;