这可能已被问过,但我无法解决,所以再次发帖。
我需要创建一个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?