T-SQL’de Stored Procedure Kullanımı

Gökhan YAVAŞ
gokhanyavas
Published in
3 min readApr 13, 2017

Bir önceki makalemde Stored Procedure (Saklı Yordamlar) ile ilgili genel bilgiler verdim. Bu makalede ise T-SQL’de Saklı Yordamların kullanımını inceliyor olacağız.

Örnek: Stok miktarı 50'nin altında kalan ve kategorisi 1 olan ürünleri listeleyen bir SP yazalım.

CREATE PROCEDURE StokDurumu    --Ya da CREATE PROC StokDurumu 
AS
SELECT * FROM Products
WHERE UnitsInStock <50 AND CategoryID=1

İlgili SP çalıştırıldığında sol tarafta bulunan Object Explorer kısımında Stored Procedure sekmesi altına StokDurumu isminde bir SP eklenir. Şimdi bu prosedürün nasıl kullanılacağına bakalım:

Exec StokDurumu;

Çalıştırdığımızda ilgili SP çalışacak ve sonuçlar listelenecektir.

Daha önce bahsetmiş olduğum ALTER ve DROP komutları prosedürler içinde geçerlidir. Bir prosedürü düzenlemek için ALTER komutunu kullanırız:

ALTER PROCEDURE StokDurumu    
AS
SELECT * FROM Products
WHERE UnitsInStock <60 AND CategoryID=2

Bir prosedürü silmek içinse DROP komutunu kullanırız:

DROP PROC StokDurumu
GO

SP’de Parametre Kullanımı

Saklı Yordamlara işlevsellik katmak için kullanılır. Parametre değerine göre çok amaçlı olarak kullanılabilir. Örneğimizi inceleyelim:

Use Northwind
GO
CREATE PROCEDURE IletisimUnvani
@ContactTitle nvarchar(50) = 'Product Manager'
AS
SELECT CompanyName,Phone FROM Suppliers
WHERE ContactTitle = @ContactTitle
GO
SP'yi çalıştırdığımızda Product Manager'a ait iletişim bilgileri döner. Biz farklı ünvana sahip birisinin bilgisini çekmek istersek şu şekilde kullanabiliriz.
exec IletisimUnvani @ContactTitle = 'Owner';Bu komut ile işletme sahibinin bilgilerini çekmiş oluruz.

İşimize Yarayacak Bazı Saklı Yordamlar

sp_rename prosedürü:SQL'de nesnelerimizin adlarını değiştirmek için sp_rename sistem prosedürünü kullanırız.Söz dizimi:
exec sp_rename @object_name, @new_object_name, @object_type
Tablo Adı Değiştirmek:SELECT object_id('Isimler')
exec sp_rename 'Isimler','Adlar';
Kolon Adını Değiştirmek:
Kolonlar, sysobjects'de yer almazlar ve birer db objesi değildirler. Tablo ismi olmadan tek başlarına bir anlam ifade etmezler. x tablosunun y kolonu diye saklanır ve çağırılırlar. Bu yüzden kolonların isimlerini değiştirirken tablo adını ayrıca tipini belirtmemiz gerekmektedir.
exec sp_rename 'Adlar.TCKimlik','Kimlik','COLUMN'Index Değerinin Değiştirilmesi:exec sp_rename 'Adlar.IsimID','AdID','INDEX'sp_help prosedürü:Sistemde bulunan bir tablo hakkında bilgi almak için kullanılır.Söz dizimi:
EXEC sp_help '@objname'
Bütün nesneler hakkında bilgi almak;USE Northwindexec sp_help
Sadece istenilen obje hakkında bilgi almak için;
USE Northwindexec sp_help 'Employees'
sp_helptext prosedürü:
Sistemde bulunan ya da bizim tanımladığımız objelerin tanımlarını text formatında döner.
Söz dizimi:
sp_helptext '@objname'
Örnek:USE Northwind
GO
EXEC sp_helptext 'Ten Most Expensive Products'
GO

Hata Fırlatmak

Programlarımızda kendimize ait hatalar üretmek için RAISERROR ifadesinden faydalanırız. PL/SQL'de bu konuya yer verdiğimden çok detaya girme gereği duymuyorum.CREATE PROC sp_ciftsayininkaresi
@sayi INT
AS
BEGIN
IF(@sayi%2!=0)
BEGIN
RAISERROR ('Girilen sayı çift sayı değil..',10,1)
END
ELSE
PRINT @sayi*@sayi
END

exec sp_ciftsayininkaresi 3;
--Girilen sayı çift sayı değil..
Özetle Saklı Yordamlar bu şekilde...

--

--