2013-08-27 90 views
1

最後一行RETURN(X)是這樣的:實體框架5 - 從我的存儲過程的存儲過程

RETURN (22); 

我打電話我的存儲過程如下:

var result = new ObjectParameter("result", typeof(double)); 
int success = context.MySP(code, Id, result); 

的存儲過程從我的代碼調用時工作正常。

code是一個字符串,Id是一個Guid和result是一個OUTPUT參數並且工作正常。

所以我知道RETURN (22);聲明已經達到(運行在查詢分析器也證實了這一點,當我在那裏運行它時,返回值是22)。

我期待(在這個例子中),success將包含22,但它總是包含-1。

什麼是22返回值變爲success變量的最直接的方法?

感謝 羅布

回答

1

您的存儲過程應該有一個輸出聲明。假設它是@result,您需要設置並返回它。

CREATE PROCEDURE MySP 
    /* 
    Input parameters here 
    */ 
    @result INT OUTPUT 
AS 
BEGIN 

    SET @result = 22 
    return @result 

END 

您呼叫的返回值應該在result

var result = new ObjectParameter("result", typeof(double)); 
context.MySP(code, Id, result); 

int success = result.Value; 
+0

所以你說它實際上不可能得到RETURN(X)值?當然,我可以使「成功」的另一個OUTPUT值,但我想我可以只使用RETURN值。 –

+0

這是可能的,但你需要在你的存儲過程中明確地設置輸出變量'@ result'的值,並返回它。然後在您的客戶端代碼中,您的ObjectParameter的Value屬性將成爲過程的結果。 – Khan

+0

感謝您的回覆。我看到我需要在SP中爲「success」和RETURN(@Success)創建另一個OUTPUT參數。唯一的問題是,RETURN(22)可能不會把22放在我的「成功」變量中?我希望得到實際的RETURN值,不管它是如何返回的。 –