2009-08-19 17 views
1

如何執行SP並獲取返回值。下面的代碼總是返回空對象。已存儲過程已經在數據庫中使用與代碼中相同的參數進行了測試,但SubSonic sp總是返回空值。當通過sql在數據庫中執行時,它會返回正確的值。如何執行帶有返回值的SubSonic3 StoredProcedure

這是使用SubSonic 3.0.0.3。

myDB db = new myDB(); 
StoredProcedure sp = db.GetReturnValue(myParameterValue); 
sp.Execute(); 
int? myReturnValue = (int?)sp.Output; 

在上面的代碼中,sp.Output始終爲空。在數據庫中執行時,返回的變量是一個有效的整數(0或更高),並且不會爲空。

存儲過程如下代碼:

CREATE PROCEDURE [dbo].[GetReturnValue]  
    @myVariable varchar(50) 
AS 
    declare @myReturn int 
BEGIN 
    set @myReturn = 5; 
    return @myReturn; 
END 

當執行SQL Server中的存儲過程,返回值是 '5'。

+1

你可以發佈sproc的sql嗎? – 2009-08-20 01:57:16

+1

添加存儲的proc代碼以上面的問題。 – 2009-08-20 15:41:57

回答

3

我複製了你的存檔,並通過SubSonic代碼和.Output從來沒有設置任何地方。解決方法是使用輸出參數並在執行後引用它:sproc.OutputValues [0];

0
CREATE PROCEDURE [dbo].[GetReturnValue]  
    @myVariable varchar(50) 
    @myReturn BIGINT OUTPUT 
AS 
    declare @myReturn int 
BEGIN 
    set @myReturn = 5; 
    return @myReturn; 
END 
1

這裏有一個簡單的方法來做到這一點:

在存儲過程,而不是使用RETURN,使用SELECT是這樣的:

SELECT @@ROWCOUNT 

SELECT @TheIntegerIWantToReturn 

然後在代碼中使用:

StoredProcName.ExecuteScalar() 

這將返回您在存儲過程中選擇的單個整數。

相關問題