我想检查表是否存在,如果不存在,那么我想创建它。但是我仍然得到这个错误:
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;
这段代码在我清理审计跟踪的过程中。
有人能帮忙吗?提前感谢!
正如我在你的评论中读到的,你说只有当表AUD$_BACKUP不存在时才会出现错误。这意味着你会在这里得到错误:
EXECUTE IMMEDIATE 'CREATE TABLE CENTRUMADMIN.AUD$_BACKUP AS select * from SYS.AUD$ where 1=2';
我猜你只是没有sys的权限。模式中的AUD$。请注意,PL/SQL代码可以使用角色权限。这意味着,即使你的模式上有"dba"角色,它也不会工作。因此,您应该运行以下grant命令:
Alter user myuser select on sys.AUD$
好运。