【问题标题】:PLSQL error PLS-00302PLSQL 错误 PLS-00302
【发布时间】:2010-09-09 08:17:23
【问题描述】:

我创建了以下程序,但它给出了 PLS-00302 错误。提前致谢:)

ORA-06550:第 11 行,第 12 列:PLS-00302:组件 'GET_LATEST_LSR_TRANSACTION' 必须是 声明 ORA-06550:第 11 行,第 3 列: PL/SQL:语句被忽略

CREATE OR REPLACE procedure SEA_USER.Get_Latest_LSR_Transaction (tn IN VARCHAR2, pon OUT VARCHAR2, duedate OUT TIMESTAMP)
IS
    trans_oid NUMBER(10) := 0;
    foc_trans_oid NUMBER(10) := 0;

BEGIN
    SELECT TRANS_OID INTO trans_oid FROM SEA_LSR_TN WHERE tn BETWEEN STARTTN AND ENDTN;

    SELECT MAX(T.OID) INTO foc_trans_oid FROM SEA_LSR_TRANS T, SEA_LSR_TXEVENT_HISTORY H WHERE T.OID IN (trans_oid) AND T.OID = H.TRANS_PARENT_OID AND H.EVENT_CODE IN ('focaccept', 'suppaccept') AND T.REQTYP = 'CB';

    IF foc_trans_oid != 0 
    THEN
        SELECT PON, DUEDATE INTO pon, duedate FROM SEA_LSR_TRANS WHERE OID = foc_trans_oid;
    ELSE
        SELECT PON, DUEDATE INTO pon, duedate FROM SEA_LSR_TRANS WHERE OID = trans_oid;
    END IF;
END;
/

【问题讨论】:

  • 这是创建时的编译错误还是运行时的错误?如果是后者,遇到该错误时如何运行它?
  • 当我运行程序时出现此错误。我使用 Toad 工具来创建和运行程序。使用“执行过程”选项运行它。

标签: oracle10g


【解决方案1】:

如果SEA_USER 架构不存在或您无权访问它,当您尝试创建您列出的过程时,您将收到ORA-01031: insufficient privileges 错误。如果过程的主体是有效的,我看不出它不能编译的原因。

鉴于此,如果您在尝试调用存储过程时收到ORA-06550 错误,那么我只能想到两种可能性:

  1. 您正在从 SEA_USER 以外的模式 没有合适的 授予允许它的权限 调用另一个用户的过程。

  2. 该过程尚未在 SEA_USER 架构。

您能否提供一个示例,说明您如何调用存储过程并确认您正在使用的用户?

【讨论】:

  • 过程创建成功没有问题但是当我尝试执行它时给出错误“ ORA-06550:第 11 行,第 12 列:PLS-00302:组件 'GET_LATEST_LSR_TRANSACTION' 必须声明 ORA-06550 :第 11 行,第 3 列:PL/SQL:语句被忽略"
  • @praveen 执行程序时,您以什么用户身份登录?你是如何执行程序的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2021-11-05
  • 2021-08-11
相关资源
最近更新 更多