T-SQL Stored Procedure (Saklı Yordamlar)
T-SQL Stored Procedure (Saklı Yordamlar) Nedir? T-SQL Stored Procedure (Saklı Yordamlar) kullanımı hakkındaki tüm her şeye bu konumuzdan ulaşabilirsiniz.
T-SQL Stored Procedure (Saklı Yordamlar)
Stored procedure, SQL Server üzerinde sorgulamalar yapmak için oluşturulan derlenmiş T-SQL ifadeleridir.
Normal SQL ifadeleri her çalıştırılıdığında derlenmektedir. Bundan dolayı ise doğal olarak sorgulama hızında yavaşlamalar meydana gelir. Stored procedureler ilk oluşturulduklarında derlenirler ve sonraki kullanımlarda tekrar derlemeye gerek kalmadan çalıştırılabilirler.
Oluşturulan Stored procedurler veri tabanı üzerinde olduğu için sunucu üzerinde depolanırlar ve çalıştırıldığında yine sunucu üzerinde çalışırlar.
Stored prosedürler dışarıdan değer alabilir ve geriye değer döndürebilirler.
Kullanımı:
CREATE PROCEDURE Prosedür_Adı (parametreler)
AS
BEGIN
--T-SQL ifadesi
END
Örnek: Öğrenci derslerini listeleyen stored procedure yazalım.
CREATE PROCEDURE Ogr_Dersleri
AS
BEGIN
SELECT ad
,soyad
,dadi
,vize
,final
FROM OgrDersleri
INNER JOIN OgrenciTanim ON OgrDersleri.ogrid = OgrenciTanim.ogrid
ORDER BY ad
END
Örnek: Dışarıdan gönderilen parametreye göre;
- Öğrencileri listeleyen
- Öğrencinin adına göre arama yapan
- Öğrencilerin okuduğu bölümü listeleyen
- Bölüme göre okuyan öğrencileri listeleyen
T-SQL kodunu yazalım.
ALTER PROCEDURE Ogrenci_Islemler (
@islem NVARCHAR(30)
,@bolum NVARCHAR(30)
,@ad NVARCHAR(30)
)
AS
BEGIN
IF (@islem = 'Öğrencileri Listele')
SELECT *
FROM OgrenciTanim
ELSE IF (@islem = 'Ada Göre Ara')
SELECT *
FROM OgrenciTanim
WHERE ad LIKE @ad
ELSE IF (@islem = 'Bölüme Göre Öğrencileri Listele')
SELECT *
FROM Bolum
INNER JOIN OgrenciTanim ON Bolum.blmid = OgrenciTanim.ogrid
ELSE IF (@islem = 'Bölüme Göre Arama')
SELECT *
FROM Bolum
INNER JOIN OgrenciTanim ON Bolum.blmid = OgrenciTanim.ogrid
WHERE blmadi LIKE @bolum
END
Bölüme Göre Arama:
Execute Ogrenci_Islemler 'Bölüme Göre Arama','d%',''
Ada Göre Arama:
Execute Ogrenci_Islemler 'Ada Göre Ara','','a%'
Tepkiniz Nedir?