相关疑难解决方法(0)

从存储过程内部oracle"表或视图不存在"

这个场景就像这样......

我有一个命名空间XXX,我创建了一些表和一些存储过程...

他们有一个名称空间YYY,他们创建了一些表...

他们XXX授予了对表的访问权限,所以当我使用XXX连接与SQL Developer 相连时,我可以这样做:

SELECT * FROM YYY.TableA
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试从存储过程(简单存储过程或包)内部运行相同的语句,则存储过程不会编译.它发生在很多sp上.还有其他许可我要问??? 我正在运行这样的sp:

CREATE OR REPLACE PROCEDURE PRC_SOMESP(
) AS BEGIN
END PRC_SOMESP;
Run Code Online (Sandbox Code Playgroud)

不访问YYY表的过程编译得很好.

提前致谢.

在Justin Cave响应之后,我正在尝试将"AUTHID CURRENT_USER"句子添加到sp中,但得到相同的"表或视图不存在"结果:

CREATE OR REPLACE PROCEDURE PRC_PROC1( PARAMETERS... )  
AUTHID CURRENT_USER  
AS  
    MYVAR NUMBER;  
BEGIN  
    STATEMENTS...
END PRC_PROC1;  

CREATE OR REPLACE PACKAGE PKG_PROC2  
AUTHID CURRENT_USER  
AS  
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE PRC_PROC2( PARAMETERS... )  
END PKG_PROC2  
Run Code Online (Sandbox Code Playgroud)

我应该检查一下吗???

oracle stored-procedures

8
推荐指数
2
解决办法
3万
查看次数

“ORA-00942: 表或视图不存在”仅在存储过程中运行时

对于 PL-SQL 人员来说,这应该很容易选择。在将此问题标记为重复之前,请确保虽然错误消息可能很常见,但潜在问题与上一个问题相同。如果是这样,请提供指向已解决的确切逻辑重复问题的链接。一世

当我登录到我的模式时,我执行以下 PL-SQL 代码:

DECLARE
  v_rpt_per_key NUMBER := 0;
BEGIN

  SELECT MAX(rpt_per_key)
  INTO v_rpt_per_key
  FROM rxfinods_sta.hd_invc_ln_item_dtl_stat;

  dbms_output.PUT_LINE('v_RPT_PER_KEY=' || v_rpt_per_key);

END;
/
Run Code Online (Sandbox Code Playgroud)

查询成功执行,最大值RPT_PER_KEY写入 Toad 中的输出窗口。

但是,当我在一个过程中执行基本相同的代码时。

CREATE OR REPLACE PROCEDURE hd_purge_test
IS
  v_rpt_per_key NUMBER := 0;
  BEGIN

    SELECT MAX(stat.rpt_per_key)
    INTO v_rpt_per_key
    FROM rxfinods_sta.hd_invc_ln_item_dtl_stat stat;
    --HD_INVC_LN_ITEM_DTL_STAT        

    dbms_output.PUT_LINE('v_RPT_PER_KEY=' || v_rpt_per_key);

    EXCEPTION
    WHEN NO_DATA_FOUND THEN
      NULL;
    WHEN OTHERS THEN
    -- Consider logging the error and then re-raise
      RAISE;
  END hd_purge_test;
Run Code Online (Sandbox Code Playgroud)

我收到表不存在的错误。

[Warning] ORA-24344: success with compilation error
14/21   PL/SQL: ORA-00942: …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures ora-00942

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×2

stored-procedures ×2

ora-00942 ×1

plsql ×1