如何检查输出DbParameter的空值?

时间:2019-05-31 15:25:57

标签: c# .net-core

我正在使用System.Data.Common.DbCommand.ExecuteNonQueryAsync来调用一个具有一个输出参数o_err_msg的Oracle存储过程,该输出参数(您猜到了)是发生异常时的VARCHAR2错误消息,或者当过程成功时为null。因此,在调用ExecuteNonQueryAsync之后,我试图检查该参数是否为null,以查看是否存在错误。但是找不到实际的方法。

我尝试(通过==运算符和Equals方法)比较参数的Value属性为null,与DBNull.Value并调用{{ 1}}。所有这些都返回null。我什至尝试将其转换为字符串(通过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或任何特定于Oracle的内容。

有什么办法可以做到这一点?

谢谢。

0 个答案:

没有答案