我有一个返回 1 或 0 的存储过程。我需要在调用它的 .net 函数中返回这个值。我知道如何从 Oracle 取回数据集(使用 refCursor),我知道如何将数据输入 Oracle,调用 cmd.ExecuteNonQuery()(假设您使用存储的过程来输入数据)。但是你如何获得一个存储过程的单一返回值呢?我没有返回数据集,而是返回 1 或 0。所以这有点不同。
谢谢。
更新:更具体地显示我哪里出错的代码?
try
{
using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ACODBConnectionString3"].ConnectionString))
{
using (OracleCommand cmd = new OracleCommand(sProc,conn))
{
conn.Open();
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter inputParm = new OracleParameter("HospitalFinIn", OracleDbType.Varchar2);
inputParm.Value = HosFin;
//inputParm3.Value = Double.Parse(isActive);
OracleParameter outRefParam = new OracleParameter("cur_out", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
//outRefParam.
cmd.Parameters.Add(inputParm);
cmd.Parameters.Add(outRefParam);
outcome = (int)cmd.ExecuteScalar();
if (outcome == 1)
FinUniq = false;
else if (outcome == 0)
FinUniq = true;
else
FinUniq = true;
//outcome = cmd.ExecuteNonQuery();
//adapter = new OracleDataAdapter(cmd);
//adapter.Fill(ds);
}
}
}
这是我运行它时遇到的异常
Specified cast is not valid.
不知道我做错了什么。存储过程肯定会返回 0 或 1。