【问题标题】:ODP.NET not recognized procedure in oracle packageODP.NET 无法识别 oracle 包中的程序
【发布时间】:2012-07-31 22:46:58
【问题描述】:

我有一个简单的包定义如下:

CREATE OR REPLACE PACKAGE wvParty IS
TYPE refParties IS REF CURSOR;

结束wvParty;

创建或替换包体 wvParty IS 过程 proc_GetParties( p_party_name IN OUT VARCHAR2, x_party_info 输出参考方 ) 是 开始 p_party_name := '%'||p_party_name||'%';

    OPEN x_party_info FOR
    SELECT party_id, party_number, party_type, party_name, 
        person_first_name, person_middle_name, person_last_name,
        known_as, known_as2, known_as3, known_as4, known_as5
    FROM hz_parties
    WHERE 1=1
    AND party_name LIKE p_party_name; 
END;

结束wvParty;

它是在 oracle 数据库中创建的,没有错误。在我的代码中,我尝试使用以下方式调用它:

      try
  {
    OracleConnection conn = new OracleConnection(_connStr);
    conn.Open();
    OracleCommand cmd = conn.CreateCommand();
    cmd.CommandText = "wvParty.proc_GetParties";
    cmd.CommandType = CommandType.StoredProcedure;

    OracleParameter partyName = new OracleParameter();
    partyName.ParameterName = "p_party_name";
    partyName.OracleDbType = OracleDbType.Varchar2;
    partyName.Direction = ParameterDirection.InputOutput;
    partyName.Value = "Bubba";
    cmd.Parameters.Add(partyName);

    OracleParameter refParties = new OracleParameter();
    refParties.ParameterName = "x_party_info";
    refParties.OracleDbType = OracleDbType.RefCursor;
    refParties.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(refParties);

    OracleDataReader rdr = cmd.ExecuteReader();

然而,当我这样做时,我得到了错误:

PLS-00302:必须声明组件“PROC_GETPARIES”。

所以我很茫然。我已经创建了 proc 作为包的一部分,我已经按照我认为应该的方式声明了它,但是我在解决这个问题时收效甚微。有什么建议吗?

【问题讨论】:

    标签: c# oracle stored-procedures package odp.net


    【解决方案1】:

    我无法评论 C# 方面的事情,但 Oracle 方面存在一些问题,例如:

    1. proc_GetParties 在包体中定义,但未在包规范中声明。这意味着它在包体之外是不可见的。这解释了您收到 PLS-00302 错误的原因。
    2. WHERE 子句中不需要1=1 条件。
    3. 您真的想在过程中更改p_party_name 的值并让调用者可以看到该更改吗?如果不是,最好保持p_party_name 不变并将LIKE 条件更改为party_name LIKE '%' || p_party_name || '%'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2019-11-23
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多