【Oracle】【PL/SQL】処理中に直接TRUNCATE を実行する

処理中に直接TRUNCATE TABLEを実行する

やりたいこと

PL/SQLの文中で「TRUNCATE TABLE」を実行したい。

通常PL/SQLの文中で「TRUNCATE TABLE」を行おうとすると、コンパイルエラーとなってしまいます。

-- TRUNCATE
TRUNCATE TABLE {テーブル名};

警告: プロシージャが作成されましたが、コンパイル・エラーがあります。

そこで動的SQLを使用し、以下のように実装することで「TRUNCATE TABLE」を実現します。

-- TRUNCATE
EXECUTE IMMEDIATE 'TRUNCATE TABLE {テーブル名}';

コード

注意点としては、実行後に暗黙コミットが行われるため、実施前の状態に戻せないということです。 DDLのため、件数確認やロールバックを行いたい場合には「DELETE」文を使用したほうが良さそうです。

EXECUTE IMMEDIATE 'TRUNCATE TABLE USER_MST'

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA