MySQL ‘de Stored Procedure Kullanımı
Blog > MySQL ‘de Stored Procedure Kullanımı25 Nisan 2010 – 23:20
Stored procedure’e MSSQL’de baya alışmıştım aynıu şeyi MySQL ile denemeye kalktığımda arada farklılıklar özellikle syntax farklılıkları beni araştırmaya sevk etti:p işe yarar diye açıklama gereği duydum..
Öncelikle oluşturma işleminden bahsediyim..
Aşağıdaki şablon genel olarak procedure oluşturma şablonudur
1 2 3 4 | CREATE PROCEDURE procedureAdi (IN,OUT,INOUT degiskenismi tipi)/*ornek. (IN a INT)*/ BEGIN /*burayada procedure iceriğimiz gelicek*/ END |
Bu kısımda bilmek gereken yukarıda
IN: giren değişken
OUT: Çıkan değişken
INOUT: Giren ve Çıkan değişkenler
1 2 3 4 5 | CREATE PROCEDURE p_tabloyaDegerEkle (IN gelenDeger INT) BEGIN insert into tablo(a) values(a) END |
Burada yapılan işi anlatmak gerekirse tabloya değer ekleme işlemi yapılıyor.Bu fonksiyonu çağırmak için aşağıdaki kodu kullanmamız gerekiyor
1 | CALL p_tabloyaDegerEkle(1) |
Bu şekilde procedure ler oluşturup kullanabilir.Aşağıdaki örnektede listeleme yapılıyor.
1 2 3 4 | CREATE PROCEDURE p_listele (IN gelenDeger INT) BEGIN select * from tablo where ID = gelenDeger END |
Eğer oluşturduğumuz tabloyu düzenlemek istersekte
1 2 3 4 5 6 7 8 9 | DELIMITER $$ SET sql_mode='' $$ DROP PROCEDURE IF EXISTS `dbisim`.`proc` $$ CREATE PROCEDURE `dbisim`.`proc` (INOUT s INT) BEGIN SET sayi = (SELECT COUNT(*) FROM kullanicilar WHERE id=s); END $$ DELIMITER ; |
Yukarıdaki gibi kullanım yapabiliriz.Burda dikkat etmemiz gereken kısım(ki ben o hataya düştüm).Eğer editlerken hata alırsanız.Procedure’niz silinmiş olucak yani kodu çalışır hale getirip tekrar oluşturana kadar procedure gözükmeyebilir.Bunun nedeni ise DROP PROCEDURE IF EXISTS `dbisim`.`proc` $$ satırıdır.Eğer varsa siliyor fakat hata olduğundan tekrar ekleyemeyip tıkanıyor:)
Etiketler: ”MySQL Stored Procedure kullanımı”