Parametreli Stored Procedure’ler – Bölüm 47
Çalışmalarınıza esneklik katmak için parametre alan sp’ler de yazabilirsiniz. Sp’ler içerisinde değişken olarak kullanmak amacıyla exec komutu kullanırken parametreleri sıralayarak çalışma şeklinizi daha esnek hale getirebilirsiniz. Dahası bazı sp’lerde OUTPUT ile de değer döndürmek mümkün. Bu bölümde sp’lere input-output parametreleri vererek veri çekmeyi öğreneceğiz.
Input Parametreleriyle Çalışmak
Sp parametreleri CREATE PROCEDURE ile tanımlanır ve sp içerisinde yerel değişken olarak kullanılır. Sp’ye input değişkeni verirken aşağıdaki syntax kullanılır:
EXEC <schema_name>.<procedure_name> @<parameter_name> = <VALUE> [, ...]
Örneğin, Production schema içerisinde supplierid isimli parametreyi kullanan ProductsBySuppliers isimli sp’yi aşağıdaki şekilde çağırabiliriz:
EXEC Production.ProductsBySuppliers @supplierid = 1;
Ayrıca, sp’ye birden fazla input verilirken bunları virgülle ayırmak gereklidir:
EXEC Sales.FindOrder @empid = 1, @custid=1;
Yürütülecek sp’nin hangi parametreyi hangi veri türüyle alıp işlendiği hakkında bilgimiz yok diyelim, SQL Server Management Studio’da sp içerisinde kullanılan değişkenlerin ismi, veri türü ve input/output yönü altında listelenmektedir. sys.parameters sistem catalog view’ından sp’lerde kullanılan parametreler hakkında bilgi edinebilirsiniz.
OUTPUT Parametresiyle Çalışmak
Şimdiye kadar sp’lerde sorguları hep SELECT ile tanımladık. SQL Server’da sp tanımlanırken OUTPUT parametresini de beraberinde tanımlayarak skaler değer döndüren sp’ler yazılabilmektedir. Sp’de kullanıldığında döndürülen sorgu sonucuna ek olarak toplam satır sayısı gibi fazladan skaler bir değer de döndürebilirsiniz. Amacınıza göre sp’den tek değer döndürüp işlemek isteniyorsa skaler değerle uğraşmak yerine OUTPUT kullanarak işleminizi daha hızlı gerçekleştirebilirsiniz.
OUTPUT parametresini iki adımda kullanmaya başlayabilirsiniz. İlk adımda tanımlama işlemi gelmektedir. Sp oluştururken tanımlanan herhangi bir parametreyi output parametresi olarak işaretlemek için parametrenin hemen önüne OUTPUT anahtar sözcüğü konur:
CREATE PROCEDURE Sales.GetCustPhone
(@custid AS INT, @phone AS nvarchar(24) OUTPUT)
AS ...
Sp oluşturulduktan sonra sonraki adım sp’nin çağırılması sırasında olacaktır. Exec ile sp çağrılırken tanımlanan değişken OUTPUT olarak işaretlenir. Sp çalıştıktan sonra output ile işaretlenen değişkene sp içerisinde işaretlenen output parametresinin değeri atanacaktır. Aşağıdaki örnekte de anlatıldığı gibi bir yerel değişken tanımlanmıştır. Sp yürütüldükten sonra dönen değer değişkene atanacak ve SELECT ifadesinde işlenecektir:
DECLARE @customerid INT =5, @phonenum NVARCHAR(24);
EXEC Sales.GetCustPhone @custid=@customerid, @phone=@phonenum OUTPUT;
SELECT @phonenum AS phone;
Sonraki bölümde görüşmek üzere.
Kaynak:
Specify Parameters