Oracleでは、TRUNCATEコマンドはDDLステートメントであるため、Oracleプロシージャで直接実行することはできません。 OracleプロシージャでDDLコマンドを実行するには、EXECUTEIMMEDIATEステートメントを使用します。以下は、ExecuteImmediateコマンドを使用してOracleプロシージャでテーブルを切り捨てる例です。
Oracleプロシージャの例でテーブルを切り捨てる
以下のOracleストアドプロシージャでは、テーブル名をパラメータとして渡すと、そのテーブルが切り捨てられます。
CREATE OR REPLACE PROCEDURE trnct_table (i_table_name IN VARCHAR2) IS BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || i_table_name; DBMS_OUTPUT.put_line ( 'Table ' || i_table_name || ' truncated successfully.'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Truncate table failed.'); END;
テスト
SET SERVEROUTPUT ON; BEGIN trnct_table ('emp'); END; /
出力
Table emp truncated successfully. PL/SQL procedure successfully completed.
注: Oracleでテーブルを切り捨てた後はロールバックできません。
関連項目:
- 表からレコードを削除するPL/SQLプログラム