检查OracleParameter.未进行ToString转换,值为Null



我有一个存储过程,它有一些OUT参数。在上。NET方面我很困惑如何在将参数转换为之前检查它是否为null。NETDouble?。我以前在几个不同的项目中做过很多这样的事情,以前从未遇到过这个问题。。。

这是我尝试过的每一种组合:

Command.Parameters.Add("PparStsValue", OracleDbType.Decimal).Direction = ParameterDirection.Output
PparStsValue = If(IsDBNull(Command.Parameters("PparStsValue").Value) OrElse
IsNothing(Command.Parameters("PparStsValue").Value) OrElse
Command.Parameters("PparStsValue").Value.ToString = "",
Nothing,
CDbl(Command.Parameters("PparStsValue").Value.ToString))

我做过的另一件事确实有效,但它似乎很荒谬,那就是检查:

Command.Parameters("PparStsValue").Value.ToString = "null"

这计算为True,因此我可以识别null。。。但是,为什么空值会转换为字符串"null"呢?这似乎与通常转换为""的所有其他内容都不一致。

除此之外,主要的问题是为什么IsDBNullIsNothing都不返回true?

使用ODP时,参数不会自动返回CLR类型,而是oracle类型。因此,对数值OracleParameter执行此操作的方法是这个

Dim oraDec as OracleDecimal = 
DirectCast(Command.Parameters("PparStsValue").Value, OracleDecimal)
Dim dbl as Double
If Not oraDec.IsNull Then 
dbl = Convert.ToDouble(oraDec.Value)
End If

相关内容

  • 没有找到相关文章

最新更新