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プログラム