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;
EXECUTE IMMEDIATE
sats exekverar en dynamisk SQL-sats eller anonymt PL/SQL-block, inom ett PL/SQL-block, eller lagrad procedur eller paket. Detta används mer specifikt om du behöver köra DDL-satser som DROP
, CREATE TABLE
etc. Du kan inte köra DDL-kommandon från PL/SQL som DML-satser, så det enda sättet är dynamisk SQL. Mer information här
och här
.