sql >> Base de Datos >  >> RDS >> Oracle

Cómo usar comandos como DROP TABLE, etc. dentro de un procedimiento almacenado

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í .