Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como usar comandos como DROP TABLE etc. dentro de um procedimento armazenado

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;

O EXECUTE IMMEDIATE A instrução executa uma instrução SQL dinâmica ou um bloco PL/SQL anônimo, dentro de um bloco PL/SQL, Stored Procedure ou Package. Isso é usado mais especificamente se você precisar executar instruções DDL como DROP , CREATE TABLE etc. Você não pode executar comandos DDL de PL/SQL como instruções DML, então a única maneira é o SQL dinâmico. Mais informações aqui e aqui .