【问题标题】:PL/SQL: dynamic query in clob string. How can i open a cursor?PL/SQL:clob 字符串中的动态查询。如何打开游标?
【发布时间】:2018-11-22 16:07:10
【问题描述】:

我使用的是 Oracle 10g,但我在使用 Open for Query_string 时遇到问题。

该查询字符串是一个动态查询,它有 7000 多个字符。

如何使用 varchar2 打开游标(在 10g 中只接受 4000 的最大长度)?目前我尝试使用 CLOB 而不是 open..for 不接受它。

在标头中声明:TYPE tref IS REF CURSOR;

DECLARE
    SQL CLOB;    
BEGIN
   SQL := '...';

   OPEN tref FOR SQL
END

不接受的10g版本是:

DECLARE
    SQL VARCHAR2(8000);    
BEGIN
   SQL := '...';

   OPEN tref FOR SQL
END

谢谢

【问题讨论】:

  • 即使在 Oracle 10 中,PL/SQL 变量也最多可容纳 32767 个字节:Quote from the manual"VARCHAR2 数据类型采用一个必需参数,该参数指定最大大小为 32767 个字节 i>"
  • 无论如何从 .net 调用到存储过程都会告诉我最大长度的错误。明明用12g没问题。

标签: plsql cursor oracle10g


【解决方案1】:

大家好

我得到了解决方案,当你有 CLOB 时,你可以使用 dbms_lob.substr...

OPEN p_ref FOR dbms_lob.substr( SQL, 32000, 1 );

【讨论】:

  • Oracle 10g 和 Oracle 12g 的这个选项效果很好
猜你喜欢
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多