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.