PL / SQL无法将表格选择为触发器

时间:2016-04-25 19:41:56

标签: oracle plsql

作为系统用户,我创建了一个新用户并授予他dba权限:GRANT dba TO user_bdda_adminProjet

我试图将DBA_ROLE_PRIVS表放入触发器中(我没有粘贴所有代码,请随时告诉我是否有必要):

CREATE OR REPLACE TRIGGER my_trigger
INSTEAD OF 
  INSERT ON vueEnquete 
  FOR EACH ROW
DECLARE
  tmp int;
BEGIN
  SELECT COUNT(*) INTO tmp FROM DBA_ROLE_PRIVS;
  ...
  ...
END;
/

但是当我尝试执行此脚本时,我收到以下错误:

Erreur(6,3): PL/SQL: SQL Statement ignored
Erreur(6,39): PL/SQL: ORA-00942: table or view does not exist

查看不同的论坛,我发现问题通常是用户没有权利使用该表。

但是当我执行时,作为我的用户user_bdda_adminProjet单独使用以下行(触发器),它完美地运行

SELECT COUNT(*)  FROM DBA_ROLE_PRIVS;

此外,如果我只是在我的触发器中注释该行,它会执行而没有任何错误,所以我猜错误是在这一行。

提前感谢您的帮助,如果您需要任何进一步的信息,请随时告诉我。

1 个答案:

答案 0 :(得分:1)

dba是一个角色,而不是特权。

通过角色获得的权限不是“活跃的”#34;在PL / SQL中。您需要将DBA_ROLE_PRIVS上的选择权限直接授予用户。