No Oracle, o comando TRUNCATE é uma instrução DDL, portanto, você não pode executá-lo diretamente no Oracle Procedure. Para executar comandos DDL no procedimento Oracle, use a instrução EXECUTE IMMEDIATE. A seguir é um exemplo de truncar uma tabela no procedimento Oracle usando o comando Execute Immediate.
Truncar tabela no exemplo de procedimento Oracle
No procedimento armazenado do Oracle abaixo, você pode passar o nome da tabela como um parâmetro e, em seguida, ele truncará essa tabela.
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;
Teste
SET SERVEROUTPUT ON; BEGIN trnct_table ('emp'); END; /
Saída
Table emp truncated successfully. PL/SQL procedure successfully completed.
Observação: Você não pode ROLLBACK após truncar uma tabela no Oracle.
Veja também:
- Programa PL/SQL para excluir os registros de uma tabela