Mysql-stored procedures ( Bölüm 1 )

MySQL piyasaya ilk çıktıgı yıllarda yani 90'ların ortalarında teknoloji ve kullanılabilirlik acısından bir çok ticari ürünün gerisindeydi.Buna ragmen popülerliği hızla artan MySQL son yıllarda özellikle 5.x versiyonlarıyla ticari rakiplerini yakalamış hatta pazarda çok önemli bir yeri işgal etmiştir.Rakiplerinin sundugu Views(görüntüler),stored procedures(kayıtlı prosedürler) ve triggers'ı (tetikliciler) bünyesine katmış ve MySQL bir çok acıdan rakiplerini zorlayabilicek bir seviyeye gelmiştir.Peki bu yukarda bahsettigim terimler nelerdir ve neden bu kadar önemlidirler.

Views:Çogunlukla bir „SELECT“ sorgusunfda çıkan sonucaların ayrı bir tabloda tutulması olayıdır. Bunun en büyük yararı çok kullanılan „SELECT“ sorgularının performansını artırması ve daha kısa anlaşılır sorgular yazılmasıdır.

Stored Procedures:İstek halinde çalışan birden fazla parametre alabilen ve birden fazla sonuc çıktısı verebilen prosedürlerdir.Biraz daha acmam gerekirse bir programlama dilinin düşünün değişkenler ve döngülerler istediginiz işlemi yapabilirsiniz.Buna birde SQL ekleyin ve bir veritabanı üstünde çalıştırın.İşte stored procedure budur.Ne işimize yarıyıcagına gelirsek daha güvenli uygulamalardan tutunda performans artışına kadar çok fazla kazancımız olucaktır.

Trigger:Tetiklici anlamına gelen trigger kelimesi sanırım durumu çok iyi açıklamaktadır.Bazı kritik SQL sorguları(Insert,Update,Delete,vb) çalıştıgı taktirde devreye giren bu küçük komutlardır.Hayat kurtarabilirler.Mesela biri veritabanında ki tüm verileri silmeye çalıştıgında otomatik devreye girip veritabanını kapatabilirler.Ya da bir çok işlemlerinizi otomatikleştirebilirler.Gayet yararlı ve işe yarıyan bir özelliktir.

Bu özelliklerin burda yazdıklarım haricinde sayısız artısı var ama genel olarak güvenlik,performans ve taşınabilirlik konularında inanılmaz artış olduğunu görüceksiniz.

Şimdi ilk örneğimizi yazalım.Konsoldan mysql komut kabuguna geçiniz.

mysql>CREATE PROCEDURE Selam() Select 'Tahribata selamlar olsun';
mysql>CALL Selam();

Gördügünüz gibi en basitinden bir Stored Procedure oluşturduk ve kullandık.Bu kodu biraz açmak gerekirse ilk satırda   CREATE PROCEDURE ile bir procedure yarattık ve Selam() ismini verdik burda önemli nokta fonksiyon adından sonra () koymayı unutmamamızdır.Son olarakta çalıştırmak istediğimiz sorguyu yazdık ve (;) ile sonlandırdık.SP(Bundan sonra böyle dicem) çağırmak içinde CALL ; kullandık.

Birde değişkenlerden bahsetmiştik dimi?

mysql>SET @a='Naber';
mysql>SELECT @a;

SET ile „a“ değişkenine bir değer atadık ve sonra bu değişkeni bir adet SELECT ifadesi ile çağırdık.Gayet basit ve açıklayıcı bir örnek bunu yanında ilerde de anlatıcağım DECLARE , SET gibi değişken atamakta kullanıldığı halde daha gelişmiştir.

mysql>DECLARE degisken VARCHAR(10);
mysql>DECLARE degisken INT DEFAULT 0;
mysql>DECLARE degisken1,degisken2,degisken3 TEXT(100);

Şimdi bu örnekleri denediyseniz büyük ihtimalle çalışmamıştır sakın panik yapmayın.DECLARE bir fonksiyon yada SP içersinde olmak zorundadır,bunun yanında BEGIN ve END blocklarının arasında olmasıda ayrı bir şarttır.Siz bunları yaptıgınızda yine bir hata alıyorsanız bunun sebebi çok basittir.Eger MySQL'e konsoldan başlanıyorsanız.
mysql>CREATE PROCEDURE deneme()

->BEGIN
->DECLARE sayi INT;

Dediğiniz anda sentaks hatası alıcaksınız bunun sebebi (;) kullanmamızdır.Bunu aşmak için DELIMITER özelliğini kullanıcaz. DELIMETER eğer SP bir satırdan uzunsa ve içersinde (;) bulunduruyorsa mysql'in direk işlemi uygulamaya kalkmaması için kullanırız basitcene bir örnek vermek gerekirse.

mysql>DELIMITER //
mysql>CREATE PROCEDURE deneme()
->BEGIN
->DECLARE degisken INT;
->END ;//
mysql>DELIMITER ;

Tarih:
Hit: 9307
Yazar: sandman



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.