CLOB 中的 Oracle 包,长度 > 32767 个字符。如何“立即执行”呢? [关闭]

Posted

技术标签:

【中文标题】CLOB 中的 Oracle 包,长度 > 32767 个字符。如何“立即执行”呢? [关闭]【英文标题】:Oracle Package inside a CLOB with length > 32767 characters. How to "execute immediate" it? [closed] 【发布时间】:2013-07-24 07:25:24 【问题描述】:

请假设我有一个包创建脚本存储在表 ALPHA 中,在 CLOB 类型的列 BETA 中。 CLOB 长度 > 32767 个字符。

使用 PL/SQL 代码,我想“立即执行”包创建脚本。

我能做到吗?

提前感谢您的热心帮助。

我使用的是 Oracle 10G

【问题讨论】:

【参考方案1】:

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。

【讨论】:

非常感谢您对我的帮助 :-)

以上是关于CLOB 中的 Oracle 包,长度 > 32767 个字符。如何“立即执行”呢? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

oracle中clob可以转成varchar2吗

Oracle的CLOB大数据字段类型(转)

oracle中blob,clob,nclob主要区别是啥?

无法在 oracle 中假脱机行大小 > 32676 的 clob 列

oracle中如何将long型的数据转换为char型

oracle怎么导出含有Clob大数据字段类型的表