当前位置: 首页 > 知识库问答 >
问题:

ODP。oracle包中的NET未识别过程

谭曦
2023-03-14

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

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 OUT refParties)IS BEGIN 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 db中创建的,没有错误。在我的代码中,我尝试使用:

      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\u GETPARTIES”。

所以我不知所措。我已经创建了proc作为包的一部分,我已经声明了它,因为我认为我应该这样做,但我在解决这个问题上几乎没有成功。有什么建议吗?

共有1个答案

楚宪
2023-03-14

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

  1. proc\u GetParties在包体中定义,但未在包规范中声明。这意味着它在包体外部不可见。这解释了为什么出现PLS-00302错误
  2. 在WHERE子句中不需要条件
  3. 是否确实要在过程中更改p\u party\u name的值,并使该更改对调用方可见?如果不是这样,最好保持p_party_name不变,并将条件更改为p_party_name,如“%”| | p_party_name | |'%”
 类似资料:
  • 在运行一个spring-boot服务器时,我在intellij中得到这个错误消息: 当我尝试使用以下命令构建项目文件夹中的项目时,它无法识别maven:mvn spring-boot: run 我通过下载maven解决了这个问题:https://maven.apache.org/install.html并将apache-maven-3.5.3文件夹中的bin文件手动添加到librarys 好像有点

  • 在中,它显示的“非静态方法'getcontext()'不能从静态上下文引用”如何解决,或者我应该调用什么来代替它。

  • 我从我的教授那里得到了这个样本溶液,但不知怎么的它不起作用。IntelliJ无法识别包。每堂课都是这样。当我悬停在它上面时,它说:“包名'spaceman.view.util'不对应于文件路径'view.util'”有没有人知道什么是错误的?我是一个完全的初学者,当谈到编码,所以很抱歉,如果这个问题是平庸的。 谢谢!!

  • 我有一个带有左连接的SELECT语句,连接的表是子查询。Oracle无法识别第二个子查询中第一个子查询的别名。它适用于DB2,但不适用于Oracle。我如何实现它或重写我的查询? Oracle错误消息:ORA-00904:“B”。“C3”:无效标识符

  • 我已经完成了npm安装netlify-cli-g,这是成功安装。我得到以下回应: 已弃用的core-js@2.6.11:core-js@ netlify-cli@2.36.0安装后C:\Users\soyebp\AppData\Roaming\npm\node\u modules\netlify cli节点/脚本/后安装。js 成功!Netlify CLI已安装! 您的设备现在配置为使用Netli

  • 所以我正在尝试在生产中部署我的rails应用程序。当我转到该页面时,我收到500错误。当我转到我的错误日志时,我收到以下错误: 我正在运行Rails 4.1和我的配置/机密。yml看起来是这样的: 我运行耙子秘密以获取密钥,并将导出放在我的bash_profile中并采购它。我成功运行了 rake 资产:预编译。然而,我仍然不断收到这个错误。有什么想法吗? 更新:我试图更新提供的错误消息,以提供稍