0

这可能已经被问过了,但我无法解决它,所以再次发布。

我需要创建一个起始值来自变量的预言序列。所以很明显,我需要在 pl/sql 块中使用相同的执行立即。

我使用以下 PL/SQL 块来创建序列:

declare nl_seqmax NUMBER :=0; 
BEGIN 
  SELECT 1000000009 
      into nl_seqmax 
  from dual; 
  if nl_seqmax > 0 THEN 
      execute immediate 'CREATE SEQUENCE my_seq INCREMENT BY 1 START WITH '||nl_seqmax || ' MAXVALUE 4000000000 CACHE 20 ORDER'; 
  end if; 
end; 
/ 

PL/SQL procedure successfully completed.

但后来在引用这个序列时,我看到它抛出 942 错误。

SQL> AUDIT GRANT ON my_seq  BY ACCESS WHENEVER SUCCESSFUL;

ERROR at line 1:
ORA-00942: table or view does not exist

对此有任何想法吗?所有对序列的引用也应该使用动态 sql 吗?

4

0 回答 0