In Oracle ist der TRUNCATE-Befehl eine DDL-Anweisung, sodass Sie ihn nicht direkt in der Oracle-Prozedur ausführen können. Um DDL-Befehle im Oracle-Verfahren auszuführen, verwenden Sie die EXECUTE IMMEDIATE-Anweisung. Unten sehen Sie ein Beispiel für das Abschneiden einer Tabelle in einem Oracle-Verfahren mit dem Befehl Execute Immediate.
Tabelle in Oracle-Prozedurbeispiel kürzen
In der folgenden gespeicherten Oracle-Prozedur können Sie den Tabellennamen als Parameter übergeben und dann wird diese Tabelle abgeschnitten.
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;
Test
SET SERVEROUTPUT ON; BEGIN trnct_table ('emp'); END; /
Ausgabe
Table emp truncated successfully. PL/SQL procedure successfully completed.
Hinweis: Nach dem Abschneiden einer Tabelle in Oracle ist kein ROLLBACK möglich.
Siehe auch:
- PL/SQL-Programm zum Löschen der Datensätze aus einer Tabelle