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
операторът изпълнява динамичен SQL оператор или анонимен PL/SQL блок в рамките на PL/SQL блок, или съхранена процедура, или пакет. Това се използва по-конкретно, ако трябва да изпълните DDL изрази като DROP
, CREATE TABLE
и т.н. Не можете да изпълнявате DDL команди от PL/SQL като DML изрази, така че единственият начин е динамичният SQL. Повече информация тук
и тук
.