我正在尝试调用返回类型为数字的 Oracle 函数。我使用 OleDB 从 C# 调用,并且我知道 Oracle 中类型编号的映射是小数。每当我打电话给这个时,我都会得到一个 0。
using (OleDbCommand _cmdDueAtDock = new OleDbCommand()) {
_cmdDueAtDock.Connection = connection;
_cmdDueAtDock.CommandType = CommandType.StoredProcedure;
_cmdDueAtDock.CommandText = "IFSAPP.PURCHASE_ORDER_LINE_API.GET_DUE_AT_DOCK";
_cmdDueAtDock.Parameters.Add(new OleDbParameter() {
ParameterName = "rv_",
OleDbType = OleDbType.Decimal,
Direction = ParameterDirection.ReturnValue
});
_cmdDueAtDock.Parameters.Add(new OleDbParameter() {
ParameterName = "order_no_",
OleDbType = OleDbType.VarChar,
Size = 50,
Direction = ParameterDirection.Input,
Value = _order_line.ORDER_NO
});
_cmdDueAtDock.Parameters.Add(new OleDbParameter() {
ParameterName = "line_no_",
OleDbType = OleDbType.VarChar,
Size = 50,
Direction = ParameterDirection.Input,
Value = _order_line.LINE_NO
});
_cmdDueAtDock.Parameters.Add(new OleDbParameter() {
ParameterName = "release_no_",
OleDbType = OleDbType.VarChar,
Size = 50,
Direction = ParameterDirection.Input,
Value = _order_line.RELEASE_NO
});
try {
_cmdDueAtDock.ExecuteNonQuery();
dueAtDock = Convert.ToDecimal(_cmdDueAtDock.Parameters["rv_"].Value);
} catch (Exception ex) {
dueAtDock = 0;
}
}
我正在使用Oracle client 11.2.0
,oracle 数据库版本是10.2.0.4.0
.
我已经阅读了有关 11.1 客户端有问题的信息,我实际上能够通过 11.1 客户端总结行为select to_char(function) from dual
- 我得到了正确的结果,to_char
但没有0
with to_char
。将我的客户端升级到 11.2 可以在本地解决此问题。