无法从存储过程(PL/SQL)内的dba\u tab\u cols中选择
我试图从存储过程中的dba_选项卡_cols视图中进行选择。它不起作用,我不知道为什么 如果我将以下SQL作为查询执行:无法从存储过程(PL/SQL)内的dba\u tab\u cols中选择,sql,oracle,stored-procedures,oracle9i,ora-00942,Sql,Oracle,Stored Procedures,Oracle9i,Ora 00942,我试图从存储过程中的dba_选项卡_cols视图中进行选择。它不起作用,我不知道为什么 如果我将以下SQL作为查询执行: SELECT t.data_type FROM dba_tab_cols t WHERE t.table_name = 'ACCOUNTTYPE' AND t.column_name = 'ACCESSEDBY'; 它很好用。但是,如果我将其复制到存储过程中,如下所示: SELECT t.data_type INTO dataType FROM dba_
SELECT t.data_type FROM dba_tab_cols t
WHERE
t.table_name = 'ACCOUNTTYPE' AND
t.column_name = 'ACCESSEDBY';
它很好用。但是,如果我将其复制到存储过程中,如下所示:
SELECT t.data_type INTO dataType FROM dba_tab_cols t
WHERE
t.table_name = 'ACCOUNTTYPE' AND
t.column_name = 'ACCESSEDBY';
我得到错误消息PL/SQL:ORA-00942:表或视图不存在,编辑器在尝试编译时高亮显示dba\u tab\u cols。在这两种情况下使用相同的db用户
数据类型声明为:
数据类型varchar2128
PL/SQL Oracle 9
有人知道这个问题吗?我没有安装oracle,但数据类型可能是一个保留字。我想试试别的。很可能是隐私问题。是通过角色访问dba_tab_列的权限,还是授予用户直接选择权限?通过角色授予的特权在存储过程中不可用
快速浏览一下谷歌,建议使用所有标签,看看该表格是否包含您需要的信息。要添加到Eoin的答案中: 对大多数人来说,这是一个好消息 令人惊讶的是,用户无法选择 在以下情况下,从程序中删除表格: 他还没有被授予选择权 直接对,而不是通过 角色 如果表用户试图编译此 程序,他得到一个ORA-00942 虽然这张桌子确实存在 他被授予选择权 这张桌子。问题是 程序不尊重角色;只有 直接授予的权利得到尊重。 所以,这意味着表所有者必须 重新规划选择权:
谢谢,这似乎有效!我在谷歌上找不到答案:谢谢,这个链接非常有用。