Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie man Befehle wie DROP TABLE etc. innerhalb einer gespeicherten Prozedur verwendet

CREATE OR REPLACE PROCEDURE proc_name AS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE SQL2005TEST.ABSENCEFULLDATADIFF_YESTERDAY';
.....
EXECUTE IMMEDIATE 'CREATE TABLE SQL2005TEST.ABSENCELATESTEND_YESTERDAY
                       AS SELECT * FROM SQL2005TEST.ABSENCELATESTEND';
....
....
EXCEPTION
  ....
  ....
END;

Das EXECUTE IMMEDIATE -Anweisung führt eine dynamische SQL-Anweisung oder einen anonymen PL/SQL-Block innerhalb eines PL/SQL-Blocks, einer gespeicherten Prozedur oder eines Pakets aus. Dies wird insbesondere verwendet, wenn Sie DDL-Anweisungen wie DROP ausführen müssen , CREATE TABLE usw. Sie können DDL-Befehle von PL/SQL nicht als DML-Anweisungen ausführen, daher ist die einzige Möglichkeit dynamisches SQL. Weitere Informationen hier und hier .