データをインポートしたあとにシーケンスオブジェクトを
テーブルの最大値に合わせて更新するプロシージャ。
DECLARE
--スキーマ情報★都度書き換えること
CONS_USERID CHAR(12):= 'HOGE_SCHEMA';
--変数
WK_SEQ_NO NUMBER;BEGIN
-------------------------------------------------------------------------------------
--
---------------------------------------------------------------------------------------最新の連番の取得
SELECT to_number(MAX(HOGE_NO)) INTO WK_SEQ_NO FROM TBL_HOGE;
--シーケンス再作成
EXECUTE IMMEDIATE 'DROP SEQUENCE TBL_HOGE_SEQ01';
EXECUTE IMMEDIATE 'CREATE SEQUENCE TBL_HOGE_SEQ01 START WITH ' || WK_SEQ_NO || ' INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 CYCLE CACHE 20 ORDER';
EXECUTE IMMEDIATE 'GRANT SELECT ON ' || CONS_USERID || '.TBL_HOGE_SEQ01 TO ' || SUBSTR(CONS_USERID,1,8) || 'UPDATE_ROLE';END;
/
なお、Oracle18からはシーケンスのリセット機能があるため、DROP⇒CREATEはしなくてよくなる。
動作確認環境:Oracle 12c