我试图检查表是否存在,如果不存在,那么我想创建它。但是我仍然遇到这个错误:
Error report -
ORA-06550: řádka 30, sloupec 28:
PL/SQL: ORA-00942: tabulka nebo pohled neexistuje
ORA-06550: řádka 30, sloupec 3:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
我的代码是:
SELECT COUNT(*) into cnt FROM dba_tables WHERE owner = 'CENTRUMADMIN' and table_name = 'AUD$_BACKUP';
DBMS_OUTPUT.PUT_LINE(cnt);
IF (cnt <= 0) THEN
EXECUTE IMMEDIATE 'CREATE TABLE CENTRUMADMIN.AUD$_BACKUP AS select * from SYS.AUD$ where 1=2';
DBMS_OUTPUT.PUT_LINE('Vytvorena tabulka AUD$_BACKUP ve shematu CENTRUMADMIN:');
END IF;
此代码位于我清理审计跟踪的过程中。
任何人都可以帮忙吗?提前谢谢!
答案 0 :(得分:0)
当我在你的评论中读到你说你只有在表AUD $ _BACKUP不存在时才会收到错误。 这意味着你在这里得到错误:
EXECUTE IMMEDIATE 'CREATE TABLE CENTRUMADMIN.AUD$_BACKUP AS select * from SYS.AUD$ where 1=2';
我猜你在架构中没有sys.AUD $的权限。 请注意PL / SQL代码可以使用角色权限。这意味着,即使你有&#34; dba&#34;你的架构上的角色,它不会工作。所以你应该运行以下grant命令:
Alter user myuser select on sys.AUD$
祝你好运。