SQL SERVER DA STORED PROCEDURE (SP) KAVRAMI

Bu makalemizde hem SQL Server da Procedure yazmayi ögrenecegiz hem de procedureler ile çalismanin bize sagladigi avantajlardan bahsedecegiz. Birden fazla SP çesidi vardir ama ben bunlarin bilinmesine gerek görmedigim ve daha fazla kafa karistiracagina inandigim için deginmeyecegim.

Makalemize SQL Server da Stored Procedure ler den bahsederek baslayabiliriz. SP ler tipki C# ta ya da diger yazilim dillerinde olusturdugumuz fonksiyonlara, prosedürlere benzerler ve kullanim amaçlari da aynidir. Sadece yazilis biçimlerinde farkliliklar vardir. Yani tipki diger yazilim dillerinde oldugu gibi bir SP içinde de baska SP çagirabilir, disaridan deger alabilir yada deger döndürebilirler. Dedigimiz gibi kullanim amaçlari da aynidir. Kullanim amaçlari ve faydalarina makalemizin sonlarina dogru bahsedecegim. SP ler bir nevi SQL ifadeleri gibidir. Yazilis biçimleri çok basit olup ne kadar iyi SQL sorgusu yazabiliyorsak o kadar gelismis SP yazabiliriz.

SQL SERVER DA PROCEDURE YAZMAK

Procedure yazmaya geçmeden önce asagidaki örnek tablomuzu inceleyelim. Zira ben asagidaki tabloya göre örnek procedureler olusturacagim.

sql-serverda-rule-kural-kavrami-1

sql-serverda-rule-kural-kavrami-1

Yazarlarimizin ad, soy ad, adres ve makale sayisinin tutuldugu yazarlar adinda basit bir tablo olusturmusuz. Yine sütun isimlerine dikkat edelim.

Ilk olarak basit parametresiz bir procedure yazalim ve procedure yazmanin kurallarini ögrenelim. Procedure yazmak için öncelikle yeni bir SQL Query olusturalim ve asagidaki kodlari yazalim. Daha sonra bu kodlari neden kullandigimizi belirtecegiz.

create procedure YazarListele –1
as begin –2
select yazarAdi,yazarSoyadi from yazarlar –3
end –4

Prosedürümüzü yazip execute diyelim ve Command(s) completed successfully. Mesajini görerek prosedürümüzün olustugunu görelim.

–1. Ilk olarak prosedür tanimlamasini create procedure veya create proc diyerek yapiyoruz ve ardindan prosedür ismini belirtiyoruz.
–2. Daha sonra as begin ile kod ve sorgu yazacagimiz bölümü açiyoruz.
–3. Tüm yazarlarimizin adini ve soyadini getiren SQL sorgusunu as begin ve end arasina yaziyoruz. Dedigimiz gibi procedure yazmak oldukça basit sadece kurallarini bilmemiz yeterli gerisi bizim SQL sorgulari ve algoritma yetenegimize kaliyor.
–4. End ile Prosedürümüzü sonlandiriyoruz.

Simdi prosedürümüzü çagiralim ve sonucu görelim.

sql-serverda-rule-kural-kavrami-2

sql-serverda-rule-kural-kavrami-2

Yazdigimiz bir prosedürü çagirmak için Query ekranina çagiracagimiz prosedür adini yazmamiz ve ardindan execute etmemiz yeterli olacaktir. Istersek prosedür adinin basina exec te yazarak çagirabiliriz.

Parametreli Stored Procedure Yazmak:

Simdide disaridan makale sayisini girdigimizde bize girdigimiz sayidan fazla makale yazan yazarlari getiren bir prosedür yazalim. Bunun için tabi ki parametreli bir prosedür yazmamiz gerekli.

Asagidaki prosedürü yazalim ve çalistiralim.

create proc makaleSayisinaGöreYazarGetir (@sayi int) –1
as
begin
select * from yazarlar where makaleSayisi>=@sayi –2
end

–1. Yukaridaki gibi prosedür tanimlamasini yaptik ve adini belirttik. Disaridan bir deger girecegimiz için sayi adinda int bir degisken tanimlamasi yaptik. Degiskenleri parantez içinde kullanmadan ve ya bir alt satira da yazabilirdiniz. Parametreleri degiskenlerin önünde @ isareti koyarak ve ardindan degisken tipini tanimlayarak kullaniriz.
Not: Eger birden fazla parametre atayacaksak aralarina virgül (,) koymamiz gerekiyor.

–2. Yine sorgumuzu yaziyoruz ve tabi ki where kosulu ile makale sayisi girdigimizi sayiya esit yada daha fazla olan yazarlari getirmesini sagliyoruz.

Hem parametreli bir prosedürün nasil kullanildigini görelim hem de prosedürümüzün çalistigini test edelim.

Yine prosedür adimizi yaziyoruz ve parametrede de belirttigimiz gibi int türünde bir deger yolluyoruz. Burada dikkat etmemiz gereken nokta parametreyi diger yazilim dillerindeki gibi parantez içinde yazmiyoruz.

Bu örnegimizle sanirim neden prosedür yazma gereksinimi duydugumuzu biraz daha anlamis olduk. Simdi SP kullanmanin faydalarina gelelim:
· Normal sorgulardan daha hizli çalisirlar. Çünkü SP ler veri tabani altinda sadece 1 defa derlenirler oysa sorgular her çalistirdiginizda derlenir.
· SP ler programlama ifadeleri kullanmaniza olanak saglar (if, while, set gibi).
· Nesnel çalismayi saglamis olur. (Sürekli ayni sorguyu yazmak yerine bir defa SP yazip sürekli onu kullanabilirsiniz)
· Veri tabani projelerinde çok fazla kullanilirlar.
· Bu nedenle herhangi bir hata ya da düzeltme söz konusu oldugunda, müdahale etmede oldukça kolaylik saglar.

YAZDIGIMIZ PROSEDÜRLERE ULASMAK VEYA DEGISTIRMEK

Yazdigimiz prosedürlere ulasmak için ilgili veri tabani altindan Programmability kabinin altindan Stored Procedures kabini açtigimizda ulasabiliriz. Istedigimiz prosedür üstüne sag tus yapip Modify dersek kodlar üzerinde degisiklik yapabiliriz. Degisiklik yaptiktan sonra create procedure diyerek tanimlama yaptigimiz kismi alter procedure olarak degistirmemiz daha sonrasinda execute etmemiz gerekecektir.

SP ile daha gelismis, daha farkli konular üzerinde makale yazmaya devam edecegim. Bizi takip edin.

Iyi Çalismalar…