在PL/SQL塊中不能直接調用DDL語句,可以利用下面的方法進行調用
方法一:動態SQL
execute immediate 'CREATE TABLE newtable AS
SELECT *
FROM table_my
WHERE 1 = 2; ';
方法二:
可以利用ORACLE內置包DBMS_UTILITY中的EXEC_DDL_STATEMENT過程,由它執行DDL語句。
BEGIN
-- 創建用於記錄事件日志的數據表
DBMS_UTILITY.EXEC_DDL_STATEMENT('
CREATE TABLE eventlog(
Eventname VARCHAR2(20) NOT NULL,
Eventdate date default sysdate,
Inst_num NUMBER NULL,
Db_name VARCHAR2(50) NULL,
Srv_error NUMBER NULL,
Username VARCHAR2(30) NULL,
Obj_type VARCHAR2(20) NULL,
Obj_name VARCHAR2(30) NULL,
Obj_owner VARCHAR2(30) NULL
)
');