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)

Öğ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Đ

Öğ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İ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

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

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

1. PL/SQL de kontrol yapıları

«BM364» Veritabanı Uygulamaları

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

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

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

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

EXISTS VE NOT EXISTS fonksiyonları

KULLANICI TANIMLI FONKSİYONLAR (Devam)

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

Oracle da kullanılan veri tipleri:

UTL_FILE PERFORMANSI

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

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

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.

Üst Düzey Programlama

SQL e Giriş. Uzm. Murat YAZICI

KULLANICI TANIMLI FONKSİYONLAR

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

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

PL/pgSQL SQL Yordamsal Dili

STORED PROCEDURE LER (Saklı Yordamlar)

MOBİL UYGULAMA GELİŞTİRME

KULLANICI TANIMLI FONKSİYONLAR (Devam)

EROL AKGÜL

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyı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.

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

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

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

PostgreSQL Veritabanı Sunucusu. 8.2 neler getiriyor?

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

SQL Komutları (2) Uzm. Murat YAZICI

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

Veritabanı Tasarımı. Veritabanı Hareketleri

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

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

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

-- 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 YÖNETİM SİSTEMLERİ II. 4. SQL PROGRAMLAMADA PROCEDURE ve FUNCTION

Sayfa 1 / 8. Tabo yapıları

VERİ TABANI ve YÖNETİMİ

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

Veritabanı Tasarımı. Alt Sorgu Temelleri

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.

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Microsoft SQL Server Sorgulama

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

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.

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

Oracle'dan PostgreSQL'e geçiş

ACCESS PLATFORMUNDA SQL

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

VERİTABANI. SQL (Structured Query Language)

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

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

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

YAPISAL SORGULAMA DİLİ (SQL)

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

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.

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

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

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

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

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

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

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

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

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

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

Advanced Oracle SQL Tuning

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

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

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

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

PostgreSQL Veritabanı Sunucusu. HOT, VACUUM ve BGWRITER

VERİ TABANI YÖNETİM SİSTEMİ 2

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

Transkript:

PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarım ve geliştiricisi @ : adnandursun.at.asrinbilisim.com.tr : +AdnanDURSUN

Sunum 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

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 Yazdığımız kodların geçişkenliğini 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.

Neden PL/pgSQL i 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

PL/pgSQL in yapısı CREATE FUNCTION isim(parametreler) RETURNS tip AS DECLARE tanımlarınız; [.] BEGIN çalışacak kodlarınız; [ ] LANGUAGE plpgsql ;

Saklı yordam yazmak CREATE FUNCTION carp(integer,integer) RETURNS integer AS DECLARE l_return integer; BEGIN l_return := $1 * $2; return l_return; LANGUAGE plpgsql ; prod=# SELECT carp(2,3); carp ------ 6 (1 row )

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

CURSOR kullanımı CURSOR nedir? TANIM : «C_CURS CURSOR FOR SELECT * FROM T_TABLO FOR UPDATE NOWAIT;» KULLANIM : «OPEN - FETCH CLOSE» OPEN C_CURS; FETCH C_CURS INTO R; OPEN C_CURS; UPDATE T_TABLO SET DURUM = K WHERE CURRENT OF C_CURS; UYARI : Yordam bitmeden cursor ı tekrar açmak için öncelikle kapatmak gereklidir. Transaction sonunda cursor kendiliğinden kapanır. cursor un aktif olup, olmadığını anlamak için «pg_cursors» tablosuna bakın.

PL/pgSQL ve Transaction Saklı bir yordam içinden COMMIT/ROLLBACK/ SAVEPOINT kullanılamaz. BEGIN; INSERT INTO t_olaylar(olay_sayisi) VALUES(1); INSERT INTO t_olaylar(olay_sayisi) VALUES(2); SAVEPOINT X; INSERT INTO t_olaylar(olay_sayisi) VALUES(3); ROLLBACK TO SAVEPOINT X; COMMIT; Sonuç ; test=# select * from t_olaylar; olay_sayisi ------------- 1 2 (2 rows)

PL/pgSQL ve Transaction Commit / Rollback kullanamayacak mıyım? BEGIN; SELECT pr_yordam1(); SELECT pr_yordam2(); Savepoint e ihtiyacım var, ne yapacağım?. BEGIN SELECT pr_yordam1(); BEGIN SELECT pr_yordam2(); EXCEPTION WHEN OTHERS OR QUERY_CANCELED THEN NULL;..

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. #variable_conflict error; #variable_conflict use_variable; #variable_conflict use_column; 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.

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;