すでに質問されているかもしれませんが、解決できなかったので再度投稿します。
変数からの開始値を使用してオラクル シーケンスを作成する必要があります。したがって、明らかに、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 を使用する必要がありますか?