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;
El EXECUTE IMMEDIATE
Ejecuta una instrucción SQL dinámica o un bloque PL/SQL anónimo, dentro de un bloque PL/SQL, un procedimiento almacenado o un paquete. Esto se usa más específicamente si necesita ejecutar instrucciones DDL como DROP
, CREATE TABLE
etc. No puede ejecutar comandos DDL desde PL/SQL como declaraciones DML, por lo que la única forma es SQL dinámico. Más información aquí
y aquí
.