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