请假设我有一个包创建脚本存储在表 ALPHA 中,在 CLOB 类型的列 BETA 中。CLOB 长度 > 32767 个字符。
使用 PL/SQL 代码,我想“立即执行”包创建脚本。
我能做到这一点吗?
预先感谢您的帮助。
我正在使用 Oracle 10G
请假设我有一个包创建脚本存储在表 ALPHA 中,在 CLOB 类型的列 BETA 中。CLOB 长度 > 32767 个字符。
使用 PL/SQL 代码,我想“立即执行”包创建脚本。
我能做到这一点吗?
预先感谢您的帮助。
我正在使用 Oracle 10G
execute immediate
直到 11gR2才支持 CLOB 。您可以使用它DMBS_SQL
来处理较大的语句。在早期版本中,您可以构建语句,但 11g 允许您解析 CLOB。
这里有一个例子。
不过,动态创建包似乎是一个奇怪的要求。
由于您使用的是 10g,因此您需要使用允许您构建大型语句的 DBMS_SQL.PARSE 版本:
PARSE 过程还支持大型 SQL 语句的以下语法:
DBMS_SQL.PARSE ( c IN INTEGER, statement IN VARCHAR2S, lb IN INTEGER, ub IN INTEGER, lfflg IN BOOLEAN, language_flag IN INTEGER);
注意:该过程连接 PL/SQL 表语句的元素并解析结果字符串。您可以使用此过程通过拆分语句来解析比单个 VARCHAR2 变量的限制更长的语句。
这种方法的一个例子在这里。