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) は便利な反面、よく理解しないで使うと後で取り返しがつかなくなります。他サイトなどもよく参考にして利用を検討してくださいね。
おつかれさまでした。