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

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

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

我能做到吗?

提前感谢您的热心帮助。

我使用的是 Oracle 10G

【问题讨论】:

    标签: oracle package clob execute-immediate


    【解决方案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

    【讨论】:

    • 非常感谢您对我的帮助 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多