2012-08-01 184 views
1

如何從存儲過程獲取返回值?從存儲過程獲取返回值

enter image description here

我注意到,存儲過程返回自身的整數。我需要在C#中獲取它。

+0

請問你在這裏想達到什麼目的? – Umesh 2012-08-01 06:30:26

+0

那麼你需要告訴你如何調用SP,有些代碼會有幫助 – V4Vendetta 2012-08-01 06:30:41

+0

不要忘了將它記爲upvote並將其標記爲接受如果它適用於你 – 2012-08-01 09:12:31

回答

2

您可以使用C#中的Return參數來獲取該值。就像下面

SqlParameter retval = sqlcomm.Parameters.Add("@return_value", SqlDbType.VarChar); 
retval.Direction = ParameterDirection.ReturnValue; 
sqlcomm.ExecuteNonQuery(); 
string retunvalue = (string)sqlcomm.Parameters["@return_value"].Value; 

注意你的程序必須返回一個值,能夠取,

create procedure [dbo].[usp_GetNewSeqVal] 
     @SeqName nvarchar(255) 
as begin 
    declare @NewSeqVal int 
    select @NewSeqVal =1 
    ---other statement 
    return @NewSeqVal 
end 
0

在你的SP,你需要返回KategoriId。默認情況下,SP返回受最新插入,更新或刪除語句影響的行數。

並確保您在C#中使用正確的數據類型,並在數據庫列KategoriId中使此功能生效。我以前在數據庫列爲Decimal時遇到了問題,並且我試圖將返回值分配給int,並且它從未工作。

1

檢查下面的代碼:

SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar); 
retval.Direction = ParameterDirection.ReturnValue; 
sqlcomm.ExecuteNonQuery(); // MISSING 
string retunvalue = (string)sqlcomm.Parameters["@b"].Value; 

更多參考檢查鏈接:Getting return value from stored procedure in C#

-1

可以使用output參數在存儲過程或使用ExecuteScalar代替ExecuteNonQuery

+0

這完全是錯誤的:'ExecuteScalar'返回單行,單列這是存儲過程中的** SELECTED ** - 它不**從**'RETURN x'語句返回值! 'OUTPUT'參數還有**無法與** RETURN'語句中的值做**。 – 2012-08-01 07:17:25