从 C# 调用 oracle 函数

Posted

技术标签:

【中文标题】从 C# 调用 oracle 函数【英文标题】:Calling an oracle function from C# 【发布时间】:2009-08-27 07:52:11 【问题描述】:

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

我必须调用函数,然后对临时表进行选择查询。函数调用成功,但选择查询抛出以下错误。

"开始:输出:= MyPackage.GetEmployeeDetails(" + ":EmployeeId,");选择 * 从 TempEmployeeDetails;结束;"

上面的查询给了我这个错误:

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

PLS-00428:此 SELECT 语句中应有一个 INTO 子句

【问题讨论】:

【参考方案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...

【讨论】:

以上是关于从 C# 调用 oracle 函数的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 调用 oracle 函数

Oracle 函数调用的返回值返回 null

C# Oracle 函数调用

从 C# 调用 Oracle 存储过程?

调用返回游标的 oracle 函数

获取从 C# (oracle) 调用的插入语句使用的序列号