MySQL Saklı Yordamlar

Yazıda MySQL saklı yordamlar hakkında bilgi verilmiş, saklı yordam oluşturma ve çeşitleri örneklerle açıklanmıştır.

Saklı yordam nedir?

Saklı yordamlar veya Stored Procedure VTYS içerisine kayıt edilen derlenmiş SQL komutlarıdır.

Saklı yordamlar içerisine yazılan kodlar derlendiğinden dolayı SQL komutlarına göre daha hızlı çalışır.

Saklı yordam özelliğini SQL Server, Oracle, Sybase gibi gelişmiş VTY sistemleri destekler.

MySQL saklı yordamlar MySQL 5.0 sürümünden sonra dahil edilmiştir.

Saklı yordamlar genellikle tekrar eden sorguları kayıt altına almak için kullanılır.

Saklı yordam oluşturma

Saklı yordamlar CREATE PROCEDURE anahtar kelimesi ile oluşturulur.

CREATE PROCEDURE SakliYordam(parametre1, parametre2, parametreN)
BEGIN
 -- MySQL ve SQL komutları
END;

Saklı yordam kullanarak urunler tablosundaki tüm ürünleri listeleyelim.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
  SELECT * FROM urunler;
END//
DELIMITER ;

Saklı yordam öncesindeki DELIMITER anahtar kelimesi ile varsayılan MySQL noktalı virgül ayracını (;) çift eğik çizgi (//) yapmış olduk.

Ayracı çift eğik çizgi yapmak yazılacak SQL ve MySQL komutlarını tek bir komut olarak saklanmasını sağlar.

Saklı yordam çalıştırma

Saklı yordamın en önemli güzel özelliği bir kere yazılıp tekrar kullanılmasıdır.

Saklı yordam çalıştırmak için CALL anahtar kelimesi kullanılır.

CALL SakliYordam(parametre1, parametre2, parametreN);

Yazmış olduğumuz SakliYordam() isimli saklı yordamı çalıştıralım.

CALL SakliYordam();

Saklı yordam çalıştırıldığında kayıt edilen saklı yordam içerisindeki SQL komutları icra edilecektir.

Saklı yordam değişken tanımlama

Saklı yordam içerisindeki değişken kullanımı MySQL Değişkenler yazısındaki gibidir.

Ancak saklı yordam içerisinde değişken oluşturmak için DECLARE anahtar kelimesi kullanılır.

Saklı yordam içerisinde değişken oluşturmak;

DECLARE degisken_adi veritipi(boyut) DEFAULT varsayilan_deger;

Değişkene değer atamak için SET anahtar kelimesi kullanılır.

Örnek; benim_adim isimli değişken oluşturmak ve değer atamak

DECLARE benim_adim VARCHAR(50) DEFAULT '';
SET benim_adim = 'Yusuf Sefa SEZER';

Saklı yordam içerisinde kullanalım.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
  DECLARE benim_adim VARCHAR(50) DEFAULT '';
  SET benim_adim = 'Yusuf Sefa SEZER';
END//
DELIMITER ;

Saklı yordamı çalıştırdığımızda değişken kullanılmadığından herhangi bir sonuç vermeyecektir.

Değişkeni SQL komutları içerisinde kullanmak için değişken ismini yazmak yeterli olacaktır.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
  DECLARE benim_adim VARCHAR(50) DEFAULT '';
  SET benim_adim = 'Yusuf Sefa SEZER';
  SELECT CHAR_LENGTH(benim_adim) AS Uzunluk;
END//
DELIMITER ;

Saklı yordam çalıştırıldığında benim_adim değişkenine yazılan değerin uzunluğunu verecektir.

Değişkenlerin faaliyet alanı tanımlandığı BEGIN ve END arasındadır.

Tanımlandığı BEGIN ve END dışarısından değişkenlere erişilmez.

Saklı yordam parametreleri

Saklı yordamlara parametre geçirilerek parametreye göre çeşitli işlemler yapılabilir.

Saklı yordama parametreleri saklı yordam parantezi içerisine yazılır.

Saklı yordam parametreleri IN, OUT ve INOUT olmak üzere üçe ayrılır.

Basit bir parametre kullanım örneği;

DELIMITER //
CREATE PROCEDURE AdUzunluk(gelendeger VARCHAR(50))
BEGIN
  SELECT CHAR_LENGTH(gelendeger) AS Uzunluk;
END//
DELIMITER ;

Parametre türü yazılmadığında IN parametresi kullanılır.

Yazılan parametreli saklı yordam kullanımı

CALL AdUzunluk('Yusuf SEZER');

Saklı yordamda IN ve OUT parametre türünün beraber kullanılması;

DELIMITER //
CREATE PROCEDURE AdUzunluk(IN gelendeger VARCHAR(50), OUT uzunluk INT)
BEGIN
  SET uzunluk = CHAR_LENGTH(gelendeger);
END//
DELIMITER ;

Saklı yordamın kullanımı;

SET @uzunluk = 0;
CALL AdUzunluk('Yusuf SEZER', @uzunluk);
SELECT @uzunluk;

Saklı yordamları kullanarak kayıt eklemek;

DELIMITER //
CREATE PROCEDURE UrunEkle(IN gelen_urun_adi VARCHAR(50), IN gelen_urun_fiyat DECIMAL, IN gelen_kat_id INT)
BEGIN
  INSERT INTO urunler(urun_adi, urun_fiyat, kat_id) VALUES(gelen_urun_adi, gelen_urun_fiyat, gelen_kat_id);
END//
DELIMITER ;

Yazılan saklı yordamı kullanarak kayıt eklemek

CALL UrunEkle('MySQL Kitabı', 49, 59);

Saklı yordamlar PHP, Java, C# gibi programlama dillerinde benzer şekilde çalıştırılır.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!