T-SQL’de Stored Procedure Kullanımı
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
GOCREATE PROCEDURE IletisimUnvani
@ContactTitle nvarchar(50) = 'Product Manager'
AS
SELECT CompanyName,Phone FROM Suppliers
WHERE ContactTitle = @ContactTitleGO
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_typeTablo 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...