【问题标题】:Executing an Oracle function using C#使用 C# 执行 Oracle 函数
【发布时间】:2016-07-06 20:32:15
【问题描述】:

我正在尝试执行一个返回 ref 游标但没有任何工作的 Oracle 函数。我已经尝试了一些 stackoverflow 帖子建议的几个解决方案。以下是我尝试过的:

功能

FUNCTION market.get_countries_list RETURN REF CURSOR 
(
  COUNTRY_CODE NUMBER(3), 
  COUNTRY_NAME VARCHAR2(50)
);

C#代码:

System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection();
conn.ConnectionString = "...";
conn.Open();
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand("MARKET.GET_COUNTRIES_LIST", conn);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.Add(new System.Data.OracleClient.OracleParameter("ref_cur", System.Data.OracleClient.OracleType.Cursor)).Direction = System.Data.ParameterDirection.Output;
System.Data.OracleClient.OracleDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
  Label1.Text = rdr.GetOracleNumber(0).ToString();
  rdr.Close();
}

以上代码产生以下错误:

ORA-01036: illegal variable name/number

我错过了什么?

【问题讨论】:

  • 看起来您正在使用适用于 Oracle 的内置 .NET Framework 数据提供程序。我相信这已被弃用。请改用 ODP.NET 库。谷歌一下,你会找到的。
  • .NET Data Provider for oracle 还是不错的,我们目前使用32Bit 之一,因为64bit dll 有已知的错误
  • 您是否查看了有关如何创建返回 SYS_REFCURSOR 的函数的 Oracle 文档,这是一个示例 stackoverflow.com/questions/2153053/…

标签: c# oracle


【解决方案1】:

这篇文章解决了我的问题:How to return a RefCursor from Oracle function?

我最终使用了 Oracle 数据访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2016-12-17
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多