Bir önceki yazımda Stored Procedure nedir ? Avantajları nelerdir bahsetmiştim. Bu yazımda ise Sp leri Mysql ‘ de ve Laravel ile nasıl kullanılır onu anlatmaya çalışacağım.
1 2 3 4 5 6 7 | DELIMITER CREATE PROCEDURE procedureName() BEGIN DECLARE @PARAM PARAM_TYPE DEFAULT [VALUE] SQL STATEMENT END DELIMITER ; |
Yukarıda mysql de nasıl bir Stored Procedure yazılır örneğini gördük. Bu kodda ki ilk satır aslında Sp ye ait bir kod değildir. Mysql deki standart ayraç olan “;” ‘ ü değiştirmeye yarıyor. Stored Procedure tanımlama mssql deki ile aynı şekilde yapılır. CREATE PROCEDURE ile sp oluşturacağımızı belirtiyoruz. Sonrasında Sp ‘i ismini yazıyoruz. BEGIN ve END blokları arasına Sp nin yapacağı sql kodlarını yazıyoruz. Böyle bir Sp oluşturmuş bulunmaktayız.
Eğer tanımladığımız Sp ye parametre göndermek istersek bunu BEGIN ve END blokları arasında DECLARE ile parametrelerimizi tanımlıyoruz. Fakat burada dikkat etmemiz gereken bir konu var. Tanımladığımız parametreler tanımlandıkları BEGIN ve END blokları arasında geçerlidir. Yazmış olduğumuz bir Sp de birden fazla BEGIN ve END blokları olabilir ve tanımlanan parametreler birbirini tanımaz.
Sp’nin çağırılması
1 | CALL procedureName |
Parametreli Stored Procedure Tipleri
Mysql de Sp ler parametreli şekilde oluşturulurken 3 farklı tipi vardır . Bunlar IN, OUT, INOUT dır.
IN yöntemini parametreye sadece değer göndereceksek kullanırız. Gönderdiğimiz değer parametreye aktarılır böyle sp içinde bilinip kullanılabilir.
OUT yöntemi parametreye dışarıdan değer gönderip sp içinde bu değişkene değer atamasını sağlayacaksak kullanırız. Sp de işlem bittiğinde tanımlanmış parametredeki değeri kullanabiliriz.
INOUT adından anlaşılacağı gibi IN ve OUT yöntemlerin birleşimi şeklinde düşünebiliriz. Hem tanımlanmış parametreye dışarıdan değer atayıp işlem sonucunda oluşan değeri kullanabiliriz.
Bu parametre gönderi tiplerine bir örnek verelim;
1 2 3 4 | CREATE PROCEDURE [procedur_name](IN parametre_name parametre_type) BEGIN SQL STATMENT ( parametre_name ) END |
Laravel’ de Stored Procedur Kullanımı
Laravel ile bir uygulama geliştirdiğimizi düşünelim. Eğer kodlarımız arasında bir sp çağıracaksak bunun bir çok değişik yöntemi vardır. Basit olarak Laravel deki DB Facade nı kullanarak nasıl kullanıldığını gösterelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | DB::select('exec my_stored_procedure("Param1", "param2",..)'); DB::select('exec my_stored_procedure(?,?,..)',array($Param1,$param2)); DB::select('EXEC my_stored_procedure'); DB:raw( 'call insert_user(?, ?, ?), [ $request->input('name'), $request->input('email'), Hash::make($request->input('password')), ]' ); |
Örneklerde de görüldüğü gibi Laravel ile tanımlanmış bir mysql stored procedure in kullanımı çok basittir. Sizde projelerinizde kolaylıkla kullanabilirsiniz. İyi çalışmalar.