这可能已经被问过了,但我无法解决它,所以再次发布。
我需要创建一个起始值来自变量的预言序列。所以很明显,我需要在 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 吗?