簡體   English   中英

如何檢查輸出 DbParameter 的空值?

[英]How to check an output DbParameter for null value?

我正在使用System.Data.Common.DbCommand.ExecuteNonQueryAsync調用具有一個輸出參數o_err_msg的 Oracle 存儲過程,該參數(您猜對了)是發生異常時的 VARCHAR2 錯誤消息,或過程成功時為 null。 因此,在調用 `ExecuteNonQueryAsync 后,我試圖檢查該參數是否為空,以查看是否有錯誤。 但找不到真正做到這一點的方法。

我已經嘗試將參數的Value屬性(通過==運算符和Equals方法)與 null、 DBNull.Value和對其調用System.Convert.IsDBNull進行比較。 所有這些都返回空值。 我什至嘗試將其轉換為字符串(通過ToString方法或System.Convert.ToString ),然后調用string.IsNullOrEmpty ,但結果字符串為"null"

我正在運行的代碼與此有些類似:

DbCommand cmd = dbConnection.CreateCommand();
cmd.CommandText = "PCKG_FOO.PROC_BAR";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("o_err_msg", OracleDbType.Varchar2, 4000, "", ParameterDirection.Output));

await cmd.ExecuteNonQueryAsync();

if (cmd.Parameters["o_err_msg"].Value != null)
    throw new InvalidOperationException(cmd.Parameters["o_err_msg"].Value.ToString());

盡管在本示例中,我將參數初始化為OracleParameter ,但在我的代碼中,我只有DbParameter可訪問,如果我不必將其OracleParameterOracleParameter或任何特定於 Oracle 的內容,我更願意這樣做。

有什么辦法可以做到這一點嗎?

提前致謝。

我今天遇到了同樣的問題,fowling 代碼應該是一種解決方法。

OracleParameter out1 = new OracleParameter("out1", OracleDbType.Varchar2, ParameterDirection.Output);
                out1.Size = 1000;
Oracle.ManagedDataAccess.Types.OracleString out1Value = (Oracle.ManagedDataAccess.Types.OracleString)out1.Value;
if (!out1Value.IsNull)
{
   // do something
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM