我必须从.NET访问以下存储过程:
FUNCTION get_date (param_id NUMBER,
param_date OUT VARCHAR2)
RETURN NUMBER IS
BEGIN
SELECT TO_CHAR(date_stored, 'dd/mm/yyyy hh24:mi:ss')
INTO param_date
FROM MYTABLE
WHERE storage_id = param_id
RETURN 0;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN -1;
WHEN OTHERS THEN
RETURN SQLCODE;
END get_date;
我尝试连接以下代码:
using (OracleConnection connection = new OracleConnection(connString))
{
try
{
connection.Open();
OracleCommand command = new OracleCommand();
command.BindByName = true;
command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "GET_DATE";
OracleParameter paramScheduleId = command.Parameters.Add("param_id", OracleDbType.Int32);
paramScheduleId.Value = id;
OracleParameter paramDate = command.Parameters.Add("param_date", OracleDbType.Varchar2);
paramDate.Direction = System.Data.ParameterDirection.Output;
OracleParameter retVal = command.Parameters.Add("retVal", OracleDbType.Int32);
retVal.Direction = System.Data.ParameterDirection.ReturnValue;
OracleDataReader dr = command.ExecuteReader();
var date = ((OracleString)paramDate.Value).Value,
}
catch (OracleException e)
{
throw e;
}
}
该表具有有效日期。但是参数param_date始终为null。
从Java代码调用该过程有效。
任何的想法?