SP’lerdeki Output parametreler, C#’daki ref parametre ile birebir aynıdır. Yani hem dışarıdaki değeri alıp kullanmak, hem de SP içerisinde değer atamak için kullanırız.

Basit bir örnek üzerinde inceleyelim. AdventureWorks veri tabanında, Production.Product tablosunu kullanarak ID’si parametre verilen ürünün adını ve fiyatını elde edelim. Ancak parametre olarak bu 3 değeri de kullanalım. Yani ürün adı ve fiyatı out parametre olarak verilsin ve değerleri SP içerisinde atansın.

CREATE PROC USERSP_UrunDetay

@productID INT,

@name VARCHAR(50) OUT,

@listPrice MONEY OUT

AS

      SELECT @name=Name,@listPrice=ListPrice FROM Production.Product

      WHERE ProductID=@productID

Şimdi de SP’yi execute edelim. Burada dikkat etmemiz gereken bir nokta var, @name ve @listPrice parametrelerinin değerleri içeride atanmış. Yani execute ederken, bu 2 değeri dışarıda tanımlayarak vermemiz gerekir.

DECLARE @outName VARCHAR(50),@outListPrice MONEY

EXEC USERSP_UrunDetay 1,@outName OUT, @outListPrice OUT

SELECT @outName[Ürün Ad],@outListPrice [Fiyat]

@outName ve @outListPrice değişkenlerini, SP içerisinden gelen @name ve @listPrice üzerindeki değerleri karşılamak için tanımladık. Çünkü bu 2 parametre output parametreydi. Bu sayede ID’si 1 olan ürünün ad ve fiyat bilgilerini elde etmiş olduk. Yukarıdaki kod bloğu çalıştığında aşağıdaki sonucu alırız.

Untitled



4 yorum:

Unknown dedi ki...

Emegine saglık

Adsız dedi ki...

Gayet güzel olmus ama bide bunun c# tarafı olsayfı dahada iyi olurdu

Onur Salkaya dedi ki...

Öncelikle teşekkür ederim.

C# tarafından kastınız nedir ? C# da out parametreler ile ilgili yazıyı aşağıdaki linkte bulabilirsiniz.

http://onursalkaya.blogspot.com.tr/2011/10/c-out-parametre.html

Eğer stored procedure'leri uygulama tarafında kullanmaktan bahsediyorsanız Entity Framework ile Stored Procedure kullanmak ile alakalı yazıya aşağıdaki linkten ulaşabilirsiniz.

http://onursalkaya.blogspot.com.tr/2011/11/adonet-entity-framework-ile-stored.html

Unknown dedi ki...

Teşekkürler

Yorum Gönder