sql >> Databasteknik >  >> RDS >> Oracle

Hur man använder kommandon som DROP TABLE etc. inom en lagrad procedur

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 .




  1. MySql - Skapa tabell om det inte finns Else Trunkate?

  2. Oracle skapar procedur som anropar en funktion

  3. Hur anropar man en lagrad mysql-procedur, med argument, från kommandoraden?

  4. Kan jag dela en fråga i flera frågor eller skapa parallellism för att påskynda en fråga?