【发布时间】:2023-03-31 01:41:02
【问题描述】:
请假设我有一个包创建脚本存储在表 ALPHA 中,在 CLOB 类型的列 BETA 中。 CLOB 长度 > 32767 个字符。
使用 PL/SQL 代码,我想“立即执行”包创建脚本。
我能做到吗?
提前感谢您的热心帮助。
我使用的是 Oracle 10G
【问题讨论】:
标签: oracle package clob execute-immediate
请假设我有一个包创建脚本存储在表 ALPHA 中,在 CLOB 类型的列 BETA 中。 CLOB 长度 > 32767 个字符。
使用 PL/SQL 代码,我想“立即执行”包创建脚本。
我能做到吗?
提前感谢您的热心帮助。
我使用的是 Oracle 10G
【问题讨论】:
标签: oracle package clob execute-immediate
execute immediate 不支持 CLOB until 11gR2。您可以使用DMBS_SQL 来处理较大的语句。在早期版本中,您可以构建语句,但 11g 允许您使用 parse a CLOB。
有一个例子here。
虽然动态创建包似乎是一个奇怪的要求。
由于您使用的是 10g,因此您需要使用version of DBMS_SQL.PARSE that lets you build up large statements:
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 变量限制的语句 通过拆分语句。
这种方法的一个例子here。
【讨论】: