Plsql PL/SQL:clob字符串中的动态查询。如何打开光标?

Plsql PL/SQL:clob字符串中的动态查询。如何打开光标?,plsql,cursor,oracle10g,Plsql,Cursor,Oracle10g,我使用的是Oracle 10g,我在Open for Query_字符串方面遇到问题 该查询字符串是一个动态查询,它有7000多个字符 如何使用varchar2打开光标(在10g中,它只接受最大长度4000)?目前,我尝试使用CLOB而不是open..for不接受它 在标题中声明:类型tref是REF CURSOR DECLARE SQL CLOB; BEGIN SQL := '...'; OPEN tref FOR SQL END 不接受的10g版本为: DEC

我使用的是Oracle 10g,我在Open for Query_字符串方面遇到问题

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

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

在标题中声明:
类型tref是REF CURSOR

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

   OPEN tref FOR SQL
END
不接受的10g版本为:

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

   OPEN tref FOR SQL
END
好的,伙计们

我得到了解决方案,当您有CLOB时,您可以使用dbms\u lob.substr

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

即使在Oracle10中,PL/SQL变量最多也可以容纳32767字节:“VARCHAR2数据类型接受一个必需的参数,该参数指定最大大小,最多可达32767字节”。无论如何,从.net调用存储过程会告诉我最大长度的错误。显然,使用12g是没有问题的。对于Oracle 10g和Oracle 12g,该选项运行得非常好