在C#中取得預存程序回傳值
本文介紹如何從C# Windows應用程式呼叫預存程序並取得其回傳值。預存程序usp_GetNewSeqVal
用於產生新的序列值。儘管參考了網路上的一些解決方案,但您仍然無法成功取得回傳值。
問題在於指令中缺少ReturnValue
方向的參數。要解決這個問題,您需要新增以下參數:
<code class="language-csharp">var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue;</code>
將參數的方向設定為ParameterDirection.ReturnValue
指示SqlCommand
將其宣告為一個變量,並將預存程序的回傳值賦給它。這類似於SQL中使用的語法(exec @ReturnValue = spMyProcedure...
)。
透過新增此參數,cmd.ExecuteReader()
呼叫將執行預存程序並將回傳值儲存在returnParameter
中。然後您可以將其作為returnParameter.Value
訪問。
以下是包含必要修改的程式碼:
<code class="language-csharp">using (SqlConnection conn = new SqlConnection(getConnectionString())) using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = parameterStatement.getQuery(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("SeqName", "SeqNameValue"); var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; conn.Open(); cmd.ExecuteNonQuery(); var result = returnParameter.Value; }</code>
透過進行此更改,您將能夠成功檢索預存程序的回傳值。
以上是如何在 C# 中檢索預存程序的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!