對C# 中的預存程序的回傳值檢索進行故障排除
嘗試從C# 中的預存程序擷取傳回值時,您可以遇到回傳值為空的問題。以下是問題的詳細說明和解決方案:
問題描述:
您定義了一個Transact-SQL 儲存過程,該過程採用兩個參數:@a作為輸入和@b 作為輸出。預存程序將 @b 設為查詢結果,並且您希望在 C# 程式碼中檢索 @b 的值。但是,當您執行預存程序並嘗試讀取返回值時,您會得到 null。
程式碼片段:
SqlConnection SqlConn = ...; SqlCommand sqlcomm = new SqlCommand("Validate", SqlConn); sqlcomm.CommandType = CommandType.StoredProcedure; sqlcomm.Parameters.Add("...", SqlDbType.VarChar, ParameterDirection.Input); SqlParameter retval = sqlcomm.Parameters.Add("...", SqlDbType.VarChar); retval.Direction = ParameterDirection.ReturnValue; sqlcomm.ExecuteNonQuery(); // MISSING string retunvalue = (string)sqlcomm.Parameters["..."].Value;
邏輯錯誤:
C# 程式中缺少的程式碼是 ExecuteNonQuery 呼叫。執行預存程序會啟動資料庫查詢並更新輸出參數@b。如果沒有這個調用,預存程序將不會運行,並且返回值保持不變。
解決方案:
在檢索回傳值之前包含ExecuteNonQuery 方法:
sqlcomm.ExecuteNonQuery(); string retunvalue = (string)sqlcomm.Parameters["..."].Value;
進行此變更後,您的程式碼將正確擷取指派給儲存中的@b 的回傳值程式。
以上是為什麼我的 C# 程式碼在從預存程序檢索回傳值時傳回空值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!