Strored Procedure Nedir?, Ne amaçla kullanılır
Depolanmış Yordamlar(Stored Procedure) : Interbase veritabanı üzerine yazılan rutinlerdir. Kullandığınız dille veya SQL ile bir ilgisi olmayıp; İnterbase veritabanına özgü bir kod yapısıdır. Stored Procedur’ların kodu platformdan bağımsızdır. Eğer verilerinizi hem UNIX’te hem de Windows’ta kullanacaksanız veritabanı işlemlerinizin çoğunu Stored Procedur’lar aracılığla yapmanızı öneririm. Böylece Stored Procedure’ların gerekli işleri yapmasını sağlayan çok küçük istemci uygulamalar yaratabilirsiniz.
En önemlisi istemci/sunucu uygulamalarda Stored Procedure’lar sunucu(server) yakasında çalışacağından (yani veritabanı’nın olduğu yerde) ilgili işlemler çok hızlı gerçekleşecek ve network trafiğini rahtlatacaktır.
Evet Stored Procedure (Depolanmış yordamlar) genel anlamda anladığımıza göre şimdi basit bir Procedure yaratalım ama önce genel yapısını inceleyelim
Kod: Tümünü seç
CREATE PROCEDURE ProcedureName
<giren parametreler>
RETURNS
<dönen parametreler>
AS
<yerel değişkenlerin tanımı>
BEGIN
<yordam gövdesi>
END
Aşağıda yazacağımız yordam bize veri kümesi değil sadece bir değer dönderecektir.
Kod: Tümünü seç
CREATE PROCEDURE SICIL_COUNT RETURNS (SICILCOUNT INTEGER
) AS
BEGIN
SELECT COUNT(*) FROM SICIL INTO :SICILCOUNT;
SUSPEND;
END
CTRL + A (Apply yapalım). Evet basit bir Depolanmış Yordam yazdık. Şimdi bunu çalıştıralım.
Şimdi ISQL’i açalım ve veritabanına bağlandıktan sonra;
Kod: Tümünü seç
select * from SICIL_COUNT (CTRL + ENTER’a basıp run edelim.
Şimdi Delphi’yi açalım ve bileşen paletinden TDatabase veya TIBDatabase’i alıp formumuzun üzerine sürükleyelim ve Databasename özelliğine uygun yolu yazdıktan sonra ör:”c:\data\dersane.gdb” gibi, daha sonra TStoreProc veya TIBStoredProc bileşenini formumuzun üzerine sürükleyelim DatabaseName özelliğine Database nesnesini atadıktan sonra StoredProcName özelliğine de yazmış olduğumuz yordamın ismini eşitleyelim (“SICIL_COUNT”)
Kod: Tümünü seç
Function TForm1.GetRecordCount: Integer;
Begin
StoredProc1.Prepare;
StoredProc1.ExecProc;
Result := StoredProc1.ParamByName(‘SICILCOUNT’).AsInteger;
End
Exception bir hata durumunda ekranda göstereceğimiz mesajı tanımlar ve genel yapısı aşağıdaki gibidir.
CREATE EXCEPTION name 'mesajınız';
ISQL’i açalım ve veritabanına bağlandıktan sonra
CREATE EXCEPTION DETAILHATA "Master kayıt kayıp veya yok"; CTRL + ENTER
bu exception’u master tabloda olmayan bir öğrenci numarasını detail kayıt olan VELI tablosuna ekleyeceğimiz kayıtta çıkacak hatada çağıracağız. Bu hatanın çıkma sebebi önceki bölümlerde tanımladığımız Referans Integrity (Referans Bütünlüğü)’den kaynaklanmaktadır.
Şimdi Veli tablosuna kayıt ekleyecek Stored Procedure’ımızı yazalım. SQL Explorer’ı açalım, veritabanımıza bağlanalım ve procedure’ın üzerinde CTRL + N’e basalım
Kod: Tümünü seç
CREATE PROCEDURE ADD_VELI (
OGRNO DOUBLE PRECISION,
VADI VARCHAR(20),
VSOYADI VARCHAR(20)
) AS
BEGIN
BEGIN
INSERT INTO VELI (OGRNO,VADI,VSOYADI) VALUES (:OGRNO, :VADI, :VSOYADI);
WHEN SQLCODE -530 DO
EXCEPTION DETAILHATA;
END
SUSPEND;
END
execute procedure add_veli(11,"Cüneyt","ERDEM"); CTRL + ENTER
11 numaralı öğrenci master tabloda tanımlı olmadığı için tanımladığımız hata mesajı ekrana gelecektir. Fakat bu yordamı Ana tabloda var olan bir kayıt numarası ile çalıştırırsanız bu hata çıkmayacak istediğiniz veriler VELİ tablosuna yazılacaktır.
Kolay Gelsin