在oracle包体中动态创建表的简单例子,主要是权限申明。
本文在包体中实现,同思路可以改在存储过程中。
调用:
begin-- Call the function:result := pkg_createtable.uf_createtable(as_sql => :as_sql);end;
包体源码 PKG_CREATETABLE.pck
CREATE OR REPLACE PACKAGE PKG_CREATETABLE AUTHID CURRENT_USER IS/*声明中增加AUTHID CURRENT_USER,不然报权限不足*/FUNCTION UF_CREATETABLE(AS_SQL IN VARCHAR2) RETURN VARCHAR2;END PKG_CREATETABLE;/CREATE OR REPLACE PACKAGE BODY PKG_CREATETABLE ISFUNCTION UF_CREATETABLE(AS_SQL IN VARCHAR2) RETURN VARCHAR2 ISV_SQL VARCHAR2(400);BEGINV_SQL := AS_SQL;IF LENGTH(V_SQL) > 0 THENNULL;ELSEV_SQL := 'CREATE TABLE T_TEST AS (SELECT SYSDATE COL_1 FROM DUAL) ';END IF;EXECUTE IMMEDIATE V_SQL;RETURN SQLCODE || SQLERRM;END UF_CREATETABLE;END PKG_CREATETABLE;/
如果觉得《在oracle包体中动态创建表 PKG》对你有帮助,请点赞、收藏,并留下你的观点哦!