从C#调用oracle函数

时间:2009-08-27 07:52:12

标签: c# oracle odp.net ora-06550

我有一个Oracle函数GetEmployeeDetails,它将所有员工详细信息保存到临时表TempEmployeeDetails表中。

我必须调用该函数,然后在临时表上调用select查询。函数调用成功但select查询会引发以下错误。

“BEGIN:输出:= MyPackage.GetEmployeeDetails(” +“:EmployeeId,”); SELECT * FROM TempEmployeeDetails; END;“

以上查询给出了这个错误:

ORA-06550:第1行,第98栏:

PLS-00428:此SELECT语句中需要一个INTO子句

1 个答案:

答案 0 :(得分:1)

我认为你应该将查询与函数调用分开,如果你使用的是OracleClient,那么代码可能是:

OracleCommand cmd = new OracleCommand("GetEmployeeDetails", conn);
cmd.CommandType = CommandType.StoredProcedure;


par = new OracleParameter("EmployeeId", OracleType.int32);
par.Value = EmployeeId;
par.Direction = ParameterDirection.Input;
cmd.Parameters.Add(par);

cmd.ExecuteNonQuery();

现在从tempEmployeeDetails获取数据会产生如下所示的另一个查询:

OracleCommand cmd = new OracleCommand("SELECT * FROM TempEmployeeDetails", conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
   //do what you want...
}