Sql ' de Stored Procedure Kullanımı,Detaylı Anlatım

Saklı Yordamlar (Stored Procedure)

T-SQL (sql server da yazdığımız komutların tamamına verilen addır) programlama dili veri 
tabanı ile program arasındaki ilk basamaktır

Hazırladığımız programda veritabanına işlem yaptırmanın iki yöntemi vardır.

İşlem için gerekli komutlar programdan gönderilir

İşlemler saklı yordamlarda saklanır. Programdan saklı yordam çağrılır.
Saklı Yordamların üstünlükleri

Yordam bir kez oluşturulduktan sonra defalarca çağrılabilir. Yaptığınız programın 
kodlarıyla oynamadan sql server da saklı yordam üzerinde değişiklik yapabilirsiniz. 
Bu işleme modülerlik adı verilir.


Eğer yapılacak işlemler fazla T-Sql kodu içeriyorsa ve/veya bu işlemler tekrar 

tekrar yapılacaksa saklı yordam yığın işlemlerinden (go ile ayrılan işlem blokları)
çok daha hızlı çalışır. Saklı yordam ilk kez çalıştırıldığında yazım denetimi yapılır ve 
hız için en iyi seviyeye getirilir. Saklı yordam derlendikten sonra sonraki kullanımlar 
için hafızada saklanır. Yani her kullanım için yazım denetimi ve hız için en iyi 
seviyeye getirme ayarı yapılmaz.

Ağ trafiğini azaltır.
Bir döngü içerisinde yüzlerce satırın herbirinde baştan sona işlem/işlemler yapılacaksa 
ağın trafik yoğunluğu artar. Bu durumda döngü işlemleri saklı yordam içerisinde 
yapılarak ağ trafiği azaltılır.

Güvenlik
Saklı Yordamı çalıştırabilmek için kullanıcının izne ihtiyacı vardır. İzne sahip değilse 
doğrudan saklı yordamı çalıştıramazlar.

Parametre

Saklı yordam içerisindeki kodlar başka programlardan gönderilen parametrelere göre 
çalıştırılabilir.

Saklı Yordamlar fonksiyonlar gibi değer döndürebilir, bu döndürülecek değer işlemi 
parametreye OUTPUT yazısı eklenerek belirtilir

Saklı yordamlar 2100 tane parametreye sahip olabilir

Parametre; parametre adı, veri türü, yönü (output veya input), ve varsayılan değer 
özelliklerine sahiptir.

Parametresiz bir örnek;

CREATE PROCEDURE stp_IlkOnOgrenci
AS
SET NOCOUNT ON
SELECT TOP 10 ogrNo, tcNo, ad, soyad FROM tbl_Ogrenci
ORDER BY ogrNo DESC

satırda stp_IlkOnOgrenci yordamı oluşturuluyor. Yordam oluşturulurken CREATE
PROCEDURE veya CREATE PROC kullanılır.

satırda AS ile yordam başlangıcı belirtiliyor

satırda nocount özelliğine atama yapılıyor

satırda t-sql cümleciği yazılıyor

Parametreli bir örnek;

CREATE PROCEDURE stp_OgrenciBilgi
@ogrNo NVARCHAR(10)
AS
SELECT ogrNo,ad,soyad FROM tbl_Ogrenci WHERE ogrNo = @ogrNo
exec stp_OgrenciBilgi '11760101'

--Bir yordamı çalıştırmak için exec veya execute

komutu kullanılır yordam çalıştırıldığında '11760101' nolu öğrenci bilgileri ekrana getirilir.
Saklı yordamlar; viewler ve fonksiyonlar gibi sql cümleciklerine tablo adı olarak yazılamaz. 
SELECT * FROM stp_OgrenciBilgi şeklinde yazım olmaz



CREATE PROCEDURE stp_OgrenciBilgi

@ogrNo NVARCHAR(10)= '11760101'
AS
SELECT ogrNo,ad,soyad FROM dbo.Ogrenci WHERE ogrNo = @ogrNo

exec stp_OgrenciBilgi '11760102'

Yordama Joker parametre geçmek
%, _, [] ve [^] karakterleri joker karakterlerdir. Eğer yordama geçilecek parametre like

sözcüğünde kullanılacaksa gönderilen parametre değeri joker karakter içerebilir. Ayrıca 
Parametreye varsayılan değer verilirken joker karakterler kullanılabilir.

CREATE PROC stp_OgrenciBilgi
@ogrAd NVARCHAR(100)= 'A%',
@ogrSoyad NVARCHAR(100) = '%'
AS
SELECT ogrNo,ad,soyad FROM dbo.Ogrenci
WHERE ad LIKE @ogrAd AND soyad LIKE @ogrSoyad

exec stp_OgrenciBilgi

DROP PROCEDURE var olan yordamı silmek için kullanılır.

DROP PROCEDURE stp_OgrenciBilgi

ALTER PROCEDURE var olan yordam üzerinde değişiklik yapmak için kullanılır
-----------------------------------------------------------------------------------------------------------------------------
ALTER PROCEDURE stp_IlkOnOgrenci
AS
SET NOCOUNT ON
SELECT TOP 10 ogrNo, ad, soyad
FROM dbo.Ogrenci
ORDER BY ogrNo ASC

SET NOCOUNT OFF


Veri Giriş Örneği


CREATE PROCEDURE stp_tbl_ogrenciVeriGir
( @ogrNo NVARCHAR(10) ,
@tcNo DECIMAL(11),
@ad NVARCHAR(100),
@soyad NVARCHAR(100),
@dogumYeri NVARCHAR(50),
@bolum_id INT,
@dogumTarihi DATETIME,
@medeniDurum TINYINT
)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO dbo.tbl_ogrenci
(
ogrNo,
tcNo,
ad,
soyad,
dogumYeri,
bolum_id,
dogumTarihi,
medeniDurum
)
VALUES
(
@ogrNo,
@tcNo,
@ad ,
@soyad ,
@dogumYeri ,
@bolum_id ,
@dogumTarihi ,
@medeniDurum
)
END

Arkadaşlar Makale Hakkında Düşüncelerinizi bekliyorum olumlu veya olumsuz

1 yorum:

 
© 2014 İrfan Blog ' s | Mehmet İrfan ErdoğanTüm Hakları Saklıdır | r