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