戻り値の型が数値の Oracle 関数を呼び出そうとしています。OleDB を使用して C# から呼び出していますが、Oracle での型番号のマッピングは 10 進数であることを理解しています。これを呼び出すたびに、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
た. クライアントを 11.2 にアップグレードすると、この問題はローカルで解決されます。0
to_char