Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser des commandes telles que DROP TABLE, etc. dans une procédure stockée

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;

Le EXECUTE IMMEDIATE L'instruction exécute une instruction SQL dynamique ou un bloc PL/SQL anonyme, dans un bloc PL/SQL, une procédure stockée ou un package. Ceci est plus spécifiquement utilisé si vous devez exécuter des instructions DDL comme DROP , CREATE TABLE etc. Vous ne pouvez pas exécuter de commandes DDL à partir de PL/SQL en tant qu'instructions DML, le seul moyen est donc le SQL dynamique. Plus d'informations ici et ici .