PostgreSQL ve PL/pgSQL

Benzer belgeler
PostgreSQL ve PL/pgSQL

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

SQL TRIGGERS (Tetikleyiciler)

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

1. PL/SQL de kontrol yapıları

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

«BM364» Veritabanı Uygulamaları

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

EXISTS VE NOT EXISTS fonksiyonları

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

KULLANICI TANIMLI FONKSİYONLAR (Devam)

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ

Oracle da kullanılan veri tipleri:

T-SQL NEDİR? Microsoft T-SQL Transact-SQL

UTL_FILE PERFORMANSI

Üst Düzey Programlama

PL/pgSQL SQL Yordamsal Dili

Cursor. Bir veri tipi olarak da ele alınabilen Transact-SQL Sunucu Cursor şu aşamalardan geçirilerek kullanılır.

MOBİL UYGULAMA GELİŞTİRME

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

SQL e Giriş. Uzm. Murat YAZICI

Veritabanı Yönetim Sistemleri (PL/pgSQL - SQL Procedural Language)

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

STORED PROCEDURE LER (Saklı Yordamlar)

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

KULLANICI TANIMLI FONKSİYONLAR

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

EROL AKGÜL

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

DML işlemleri. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı May Öğr. Gör. Murat KEÇECĠOĞLU

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

Veri Tabanı ve Yönetimi

Çok tablolu sorgulamalar

Öğr.Gör.Murat KEÇECĠOĞLU. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veritabanı Tasarımı. Alt Sorgu Temelleri

SQL Komutları (2) Uzm. Murat YAZICI

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Veritabanı Tasarımı. Veritabanı Hareketleri

Veritabanı Tasarımı. Introduction to the Oracle Academy

HB1002: ORACLE 10G VERĐTABANI PL/SQL ile PROGRAMLAMA (32 saat)

Öğr.Gör.Murat KEÇECĠOĞLU 27 May. 28 May Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

VERİ TABANI YÖNETİM SİSTEMLERİ II. 4. SQL PROGRAMLAMADA PROCEDURE ve FUNCTION

Sayfa 1 / 8. Tabo yapıları

PostgreSQL Veritabanı Sunucusu. 8.2 neler getiriyor?

Tetikleyiciler (TRIGGER) Tetikleyiciler ne zaman kullanılırlar. Ardı Sıra Tetikleyiciler (After Triggers) Örnek

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Döngü Problemleri. 1. Aşağıdaki programın çıktısı nedir? continue yerine break yazılırsa çıktı ne olur? Neden? Program 1.1.

//bu ifadelerin ikisi de gerçekleşiyorsa havale işlemi gerçekleşmiştir fakat 1 tanesini çalışmazsa havale olmamıştır.

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim) -16 Mart 2014 A

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim)-16 Mart 2014 B

Oracle'dan PostgreSQL'e geçiş

Microsoft SQL Server Sorgulama

DERECESİ: ARANAN ŞARTLAR: İLAN TARİHİ:

ACCESS PLATFORMUNDA SQL

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

VERİ TABANI ve YÖNETİMİ

VERİTABANI. SQL (Structured Query Language)

BÖLÜM -6: VERİLERİ DEĞİŞTİRMEK

JDBC kütüphanesi, her görev için genellikle veritabanı kullanımı ile ilişkili API leri içerir:

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

YAPISAL SORGULAMA DİLİ (SQL)

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

YZM 5560 PL/SQL ile VERİTABANI PROGRAMLAMA UYGULAMA #5

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

COMMIT: Oluşturulan transaction işlemi başarılı bir şekilde gerçekleştiğinde yapılan değişikliklerin veritabanına kalıcı olarak aktarılmasıdır.

Bölüm 4: DDL Veri Tanımlama Dili

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

Transaction ve Ortak Zamanlılık. Sibel SOMYÜREK

VERİTABANI Veritabanı Yönetimi

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

Veritabanı Tasarımı. Seriler ile Çalışma

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

Advanced Oracle SQL Tuning

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

Exadata Üzerinde Veri Sıkıştırma Yöntemleri

PHP Günleri 2013#1. mysql_* Fonksiyonları Ömrünü Doldurmak Üzere. Peki Şimdi Ne Olacak? Özgür Yazılım A.Ş.

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

SQL Stored Procedure

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

Transkript:

PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarımcı ve geliştirici adnandursun@asrinbilisim.com.tr 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 1

Akış PL/pgSQL nedir PL/pgSQL neden kullanmalıyız PL/pgSQL in yapısı Saklı yordam yazmak Kontrol deyimleri Cursor kullanımı PL/pgSQL ve Transaction PL/pgSQL ve PL/SQL 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 2

PL/pgSQL nedir PostgreSQL veritabanı üzerinde kullanılabilen birkaç dilden en önemlisidir. İçersinde program kontrol deyimleri LOOP WHILE IF EXIT ve gelişmiş hata denetimi özellikleri mevcut Veritabanına gömülüdür ve onun parçasıdır Veritabanının çalıştığı tüm platformlarda çalışır. Platform bağımsızlık Veritabanının üzerinde çalıştığı için network yükünüzü azaltır Veritabanı üzerindeki tüm veri tipleri ile uyumluluk gösterir Oracle PL/SQL diline yazılım kuralları açısından çok benzer Geçişkenliği artırır Blok bazlı yapıdadır, kolay anlaşılır ve yazılır DECLARE Tanımlamalarınız BEGIN Çalışacak kodlarınız END; 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 3

PL/pgSQL neden kullanmalıyız Veritabanı üzerinde çalıştığı için ; Veritabanına erişim ve kontrol işlemlerini etkili hızlı ve çok kolay şekilde yapabiliriz Veritabanındaki tüm veri tiplerini kullanabilir ve nesnelere kolayca erişebiliriz Kodlarımız açısından platform bağımsızlık sağlar 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 4

PL/pgSQL in yapısı CREATE FUNCTION isim(parametreler) RETURNS tip AS DECLARE tanımlarınız; [.] BEGIN çalışacak kodlarınız; [ ] END; LANGUAGE plpgsql ; 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 5

Saklı yordam yazmak CREATE FUNCTION carp(integer,integer) RETURNS integer AS DECLARE l_return integer; BEGIN l_return := $1 * $2; return l_return; END; LANGUAGE plpgsql ; prod=# SELECT carp(2,3); carp ------ 6 (1 row) 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 6

Kontrol deyimleri IF... THEN... ELSIF... THEN... ELSE LOOP... WHILE FOR EXIT CASE WHEN CONTINUE.. BEGIN IF Y > 1 THEN LOOP EXIT WHEN X > 75; -- X > 75 ise LOOP tan çık CONTINUE X < 50; -- X < 50 Olduğu sürece LOOP a dön -- X in 50 ile 75 arasında olduğu şartlarda buraya END LOOP; END IF; RETURN (X+Y); END; 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 7

Cursor kullanımı C_CURS CURSOR FOR SELECT * FROM T_TABLO FOR UPDATE NOWAIT; R T_TABLO%ROWTYPE; R RECORD; OPEN - FETCH - CLOSE UPDATE T_TABLO SET DURUM = K WHERE CURRENT OF C_CURS; 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 8

Cursor kullanımı Yordam bitmeden cursor ı tekrar açmak için öncelikle kapatmak gereklidir. Transaction sonunda cursor kendiliğinden kapanır. test=# SELECT * from pg_cursors; name statement is_holdable is_binary is_scrollable --------+-----------------------------+-------------+-----------+---------------+ c_curs SELECT * FROM T_TABLO f f t (1 row) 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 9

PL/pgSQL ve Transaction Saklı yordam içinden COMMIT/ROLLBACK/ SAVEPOINT kullanılamaz. BEGIN; INSERT INTO agg.t_olaylar(olay_sayisi) VALUES(1); INSERT INTO agg.t_olaylar(olay_sayisi) VALUES(2); SAVEPOINT X; INSERT INTO agg.t_olaylar(olay_sayisi) VALUES(3); ROLLBACK TO SAVEPOINT X; COMMIT; Sonuç ; test=# select * from agg.t_olaylar; olay_sayisi ------------- 1 2 (2 rows) 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 10

PL/pgSQL ve Transaction Commit / Rollback kullanamayacak mıyım? BEGIN; SELECT pr_yordam1(); SELECT pr_yordam2(); END; Savepoint e ihtiyacım var!. BEGIN SELECT pr_yordam1(); BEGIN SELECT pr_yordam2(); EXCEPTION WHEN OTHERS OR QUERY_CANCELED THEN NULL; END; END;.. 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 11

PL/pgSQL ve PL/SQL PL/pgSQL, bir transaction bloğu içinden çalışır. PL/SQL kendi içersinden transaction başlatıp, bitirebilir. PL/pgSQL, SQL komutları içinde kullanılan ifadelerin tablo sütun ismi veya bir değişken olduğunu kabul eder. PL/SQL bunların tablo sütun ismi olduğunu kabul eder. PostgreSQL saklı paketleri desteklemez. Fonksiyonlarınızı gruplamak için şemaları kullanın. Saklı paketler olmadığından, paket seviyesi değişkenler de yoktur. Oturum bazlı değişken değerlerinizi geçici tablolarda tutun. 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 12

PL/pgSQL ve PL/SQL FOR döngülerinde REVERSE kullanıldığında ; PL/pgSQL 1 nci rakamdan 2 nci ye doğru sayar FOR I IN REVERSE 10..1 LOOP. END LOOP; PL/SQL 2nci den 1 nci ye doğru sayar FOR I IN REVERSE 1 10 LOOP. END LOOP; Sorgu ile kullanılan FOR döndüleri için; <CURSOR hariç> PL/pgSQL değişken tanımlaması ister, PL/SQL istemez. FOR sorgu_type IN <sorgu>loop END LOOP; 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 13

PL/pgSQL ve PL/SQL Birisi cebinizi yakar, diğeri içinizi ısıtır 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 14

TEŞEKKÜRLER PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarımcı ve geliştirici adnandursun@asrinbilisim.com.tr Yararlanılan Kaynaklar http://www.postgresql.org/docs 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 15