无法从存储过程(PL/SQL)中的dba_tab_cols中进行选择

JJ.*_*JJ. 6 sql oracle stored-procedures oracle9i ora-00942

我正在尝试从存储过程中的dba_tab_cols视图中进行SELECT.它不起作用,我不知道为什么.

如果我执行以下SQL作为查询:

SELECT t.data_type FROM dba_tab_cols t
WHERE 
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,如果我将其复制到存储过程中,如下所示:

SELECT t.data_type INTO dataType FROM dba_tab_cols t
WHERE
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';
Run Code Online (Sandbox Code Playgroud)

我收到错误消息"PL/SQL:ORA-00942:表或视图不存在",编辑器在尝试编译时突出显示dba_tab_cols.在这两种情况下都使用相同的db用户.

dataType声明为:dataType varchar2(128);

PL/SQL(Oracle 9)

有人知道这个问题吗?

Eoi*_*ell 12

这很可能是特权问题.是dba_tab_columns 通过角色访问的权限还是对用户的直接选择授权?SPROCS不提供通过角色授予的权限.

快速查看谷歌建议使用all_tab_cols而不是看看该表是否具有您需要的所需信息.