Oracle使用execute immediate创建序列

时间:2013-09-23 08:55:54

标签: sql oracle

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

我需要创建一个oracle序列,其起始值来自变量。显然我需要在pl / sql块中使用execute immediate。

我使用以下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?

0 个答案:

没有答案