Plsql PL/SQL:clob字符串中的动态查询。如何打开光标?
我使用的是Oracle 10g,我在Open for Query_字符串方面遇到问题 该查询字符串是一个动态查询,它有7000多个字符 如何使用varchar2打开光标(在10g中,它只接受最大长度4000)?目前,我尝试使用CLOB而不是open..for不接受它 在标题中声明: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
类型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,该选项运行得非常好