Stored Procedure Kullanımı 88748874 okunma
SQL Server bileşeni olan Stored Procedure, bizler çok yönden kolaylıklar sağlıyor. Stored Procedure, saklı yordam manasına ya da saklı işlem grubu anlamına gelir. Procedure’ler Database Server içerisinde saklanırlar. Bununla birlikte birçok parametre kullanabiliriz. Her türlü işimizde kullanabiliriz. Bununla ilgili gerekli açıklama sözlük içerisinde yapıldığından kullanımına geçiyorum.
Mantığı şudur, sürekli olarak uzun bir kod yazdığınızı düşünün. Her gün veya her hafta ya da işiniz her düştüğünde o kodu yazmaktansa bir isimle o sorguyu çağırmak sizi bir yükten kurtarır. Işte burada procedure oluşturulur ve içerisine o sorgu yazılır. Ardından procedure ismi yazılarak gerekli işlem görülür.
Bu makaleyi daha iyi anlamanız için birçok örnek yapacağım.
Stored Procedure’ler, select, update, insert, delete gibi işlemlerde kullanılır.
Not: Procedure oluşturabilmeniz için System Administrator (sysadmin), Database Owner (db_owner), Data Definiton Language Administrator (db_ddladmin) rollerine ya da CREATE PROCEDURE izni verilmiş bir role sahip olmalısınız, aksi halde oluşturamazsınız.
Kullanımı şu şekildedir:
create procedure [Procedure_ismi] (@parametre-ismi verituru)
as
create procedure diyerek prosedür oluşturulur, ardından bir isim verilir. Onun ardından eğer bir parametre girilecekse o yazılır ve parametre veritürü belirtilir.
Parametre Kavramı
Parametre neden girilir? Eğer biz dışarıdan bir değer gireceksek, o parametreyi kullanırız. Örnek verelim, bir insert işlemi yaptıracaksınız. Ad ve Soyad sütunlarını ekleyeceksiniz. O halde insert edeceğiniz iki sütunsa, iki parametreniz olacak. Yine bir örnek verelim. Benim girmiş olduğum isimdeki kişileri listelemesini istiyorum diyelim. Bakın ne dedim? “Benim girmiş olduğum isimdeki kişileri” dedim. Yani burada bir tane parametre var ki ben ona isim gireceğim. Örnek ile bunları pekiştirelim.
Parametreler başına @ işareti koyularak oluşturulur. Ardından parametre ismi girilir (istediğiniz gibi girin), ardından parametreyle alakalı veri türünü girin (veri türü fiziksel tabloda olan veri türü olmalıdır), ardından ise girilecekse karakter değeri girilir.
Birden çok parametre girilecekse virgül koyularak bir satır alta inilir. Virgülü sakın untumayın.
Örneğin:
(
@spAdi nvarchar (50),
@spSoyadi nvarchar (50),
@spMaas decimal (18,2)
)
Şimdi bir örnek yaparak anlamaya çalışalım. Üyeler isimli tablomu listelemesini istiyorum diyelim.
create procedure uyeleriListele
as
select * from Uyeler
Execute dediğimizde procedure oluşturulacaktır.
Yukarıda bir parametre girmedim çünkü dışarıdan bir değer girmeme gerek yok, yalnızca listeleme işlemi istemişim.
Stored Procedure’lerin Çalıştırılması
Prosedürler exec ya da execute yazılarak çalıştırılırlar. Az önce oluşturduğumuz stored procedure’u çağırmak için iki yöntem kullanabiliriz.
1. exec uyeleriListele
2. uyeleriListe -- bu şekilde yazdığımızda da kabul eder.
Yukarıdaki prosedürü çalıştıralım.
Oluşturulan Stored Procedure’lere Erişmek
Oluşturduğumuz prosedüre erişmek için veritabanımızın içine girip, Programmability içerisinde Stored Procedures içerisine bakmak olacaktır. Aşağıdaki gibi.
Stored Procedure Üzerinde Parametreli Örnekler
Örnek: Öyle bir prosedürüm olsun ki, benim girdiğim maaşı alan kişileri listelesin..
Çözüm: “Benim girdiğim maaşı” diyorsam demek ki bir adet maaş gireceğim, yani bir adet parametrem olacak.
Şöyle ki:
create proc maasGetir
(
@spMaas decimal (18,2)
)
as
Select * from Uyeler Where Maas = @spMaas
Prosedürümüzü çalıştıralım ve bir maaş girelim, bize o maaşta olan kişinin bilgilerini listelesin.
Görüldüğü gibi listeledi.
Örnek: Benim girmiş olduğum maaş aralığındaki kişileri listelesin.
Çözüm: “Maaş aralığı” diyorsam iki adet maaş sayısı gireceğim, yani iki adet parametrem olacak.
Şöyle ki:
create proc maasAraligi
(
@spMaas1 decimal (18,2),
@spMaas2 decimal (18,2)
)
as
Select * from Uyeler Where Maas Between @spMaas1 and @spMaas2
Prosedürümüzü çalıştıralım.
Görüldüğü gibi çalıştı.
Örnek: Kullanıcı adında girmiş olduğum harf varsa o kişilerin bilgilerini listelesin.
Çözüm: Burada like kullanımı biraz değişik. % işaretleri tek tırnak içerisine alınıp + ile parametreye atanıyor. Şimdi gösterelim.
Şöyle ki:
create proc kadiAra
(
@spHarf nvarchar(1)
)
as
Select * from Uyeler Where KullaniciAdi Like '%' + @spHarf + '%'
Çalıştıralım.
Görüldüğü üzere A harfindeki kullanıcıyı getirdi.
Örnek: Uyeler tablomdaki CocukSay sütunundan yola çıkarak, girmiş olduğum isimdeki kişinin çocuk sayısı 3 veya fazlaysa “Çocuk sayısı yeterli”, 3’den azsa “Çocuk sayısı yetersiz” çıktısını verecek sorguyu yazın.
Çözüm: Burada if exists mantığıyla gideceğiz.
Şöyle ki:
create proc cocukBak
(
@spIsim nvarchar(50)
)
as
if exists (Select * from Uyeler Where AdSoyad = @spIsim and CocukSay > = 3)
print ('Çocuk sayısı yeterli')
else
print ('Çocuk sayısı yetersiz')
Şimdi çalıştıralım ve çıktısına bakalım.
Görüldüğü üzere ismimi yazdım ve çocuk sayısının yetersiz olduğun söyledi.
Stored Procedure’lerde declare, if exists, while gibi her türlü fonksiyonları, metotları kullanabilirsiniz.
Varolan Procedure’u Güncellemek ya da Silmek
Bu işlemi komutla yaparsak şu şekilde olacaktır:
Alter Proc procedureIsmi dememiz yeterlidir. Ardından parametre sayısını arttırabilir ya da azaltabiliriz, ya da sorgumuzu güncelleyebiliriz.
Bunun yanında Programmability içerisinde Stored Procedures içerisine girdiğimizde burada oluşturduğumuz prosedüre sağ tuş yapıp modifiy dediğimizde de aynı işlem olacaktır.
Eğer bir prosedürü silmek istiyorsak bu komutla bu şekildedir:
Drop Proc procedureIsmi yapmamız yeterlidir.
Böyle istemiyorsak, prosedüre sağ tuş yapın ve delete deyin, bu da aynı işlevdir.
Stored Procedure’ler aslında geniş kapsamlı bir konu. Bu makalemde sizlere kullanımını gösterdim, diğer makalelerde farklı yerlerine giriş yapacağız.
Konuyla ilgili bir probleminiz varsa BilişimLife Forum alanından Veritabanı kategorisine başlık açmanız yeterlidir.
Kolay gelsin.
Recep ŞERIT
BİR YORUM YAZIN