2012-07-16 150 views
4

我有一個存儲過程,它返回一個字符串值,我必須使用ExecuteNonQuery語句執行此SP。當我執行這個時,我得到-1作爲返回值。ExecuteNonQuery返回-1

我從來沒有用過SET NOCOUNT ON。我怎樣才能獲得回報價值?我沒有聲明返回值爲OUTPUT - 只是SELECT @VARIABLENAME。我如何使用ExecuteNonQuery獲得價值?

+0

對於返回*字符串的過程是不可能的。它可能會生成包含varchar或nvacrhar類型列的結果集,或者可能會設置varchar或nvarchar類型的輸出參數。返回只能是int,你永遠不應該使用return。 – 2012-07-16 10:15:00

+0

我覺得你很迷惑「返回」與輸出參數或選擇語句。如果您向我們展示您的過程,我們可以向您展示如何使用C#中的值。 – 2012-07-16 12:14:57

回答

7

ExecuteNonQuery用於執行查詢that return only the number of rows affected(雖然可以填充輸出參數)。 -1表示沒有行受到影響,或者您已設置nocount。

如果您需要從sproc讀取數據,請使用另一個API調用。

+0

大家好, 我面臨的問題是通過設置輸出參數並將其作爲輸出參數前端來解決。當我搜索解決方案時,沒有辦法使用'ExecuteNonquery',因爲它返回受影響的行數。謝謝你的回覆和指導...... – Sivajith 2012-07-16 12:43:59

1

如果你只抓取一個值,我會使用ExecuteScalar命令,如果你在.Net語言。我知道Java和類似的東西是相同的。

http://msdn.microsoft.com/en-us/ibrary/system.data.sqlclient.sqlcommand.executescalar.aspx

的ExecuteNonQuery可以得到返回的數據,如果你有輸出PARAMATERS在你的SP。這篇文章解釋瞭如何。

http://msdn.microsoft.com/en-us/library/80x06z3b(v=VS.71).aspx

雖然再次,如果你只是返回一個字符串的ExecuteScalar更容易使用。