Oracle PL/SQL TRUNCATE TABLEでコンパイラエラーになった場合の解決方法

OracleでTRUNCATE TABLEでコンパイラエラーになった場合の解決方法です。

通常 PL/SQL で直接 TRUNCATE TABLE と記述することはできません。記述する場合は動的 SQL で記述します。

今回は Oracle PL/SQLでのTRUNCATE TABLE記述方法とTRUNCATE TABLEの注意点 を紹介します。


動的SQLでTRUNCATE TABLEを記述する

CREATE OR REPLACE PROCEDURE PROC_TRUNCATE
IS BEGIN
  EXECUTE IMMEDIATE 'TRUNCATE TABLE EMPLOYEE';
END;

EXECUTE IMMEDIATE を使って動的 SQL を記述します。こうすることでコンパイルエラーを防ぎ、TRUNCATE TABLE を実行することができます。

TRUNCATE TABLE(TRUNCATE CLUSTER)の注意点

TRUNCATE TABLE(TRUNCATE CLUSTER) は DELETE 文より高速にデータを削除することができます。例えば、毎日バッチでデータを総入れ替えする場合などの処理には有効です。

しかし注意も必要です。

TRUNCATE TABLE を実行すると暗黙コミットが発生し ROLLBACK することはできません。何かの予期せぬエラーが発生した場合には、そのテーブルのデータを復元できないのです。

もし Exception が発生したら ROLLBACK したいという場合には DELETE 文を使うことをおすすめします。

まとめ

Oracle PL/SQLでのTRUNCATE TABLE記述方法とTRUNCATE TABLEの注意点を紹介しました。

TRUNCATE TABLE(TRUNCATE CLUSTER) は便利な反面、よく理解しないで使うと後で取り返しがつかなくなります。他サイトなどもよく参考にして利用を検討してくださいね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。