长度> 32767 个字符的 CLOB 内的 Oracle 包。怎么"execute immediate"呢?



请假设我有一个包创建脚本存储在表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变量限制的语句通过拆分语句。

这里是这种方法的一个例子。

相关内容

  • 没有找到相关文章

最新更新