我试图在oracle函数中传递CLOB作为输入参数.该函数已成功创建,但当我尝试传递一个冗长的字符串时,它会给出
ora-01704字符串文字太长了
错误.
以下是我的功能:
CREATE OR REPLACE FUNCTION mySchema.TESTFUNCTION(myData IN CLOB) RETURN INT AS BEGIN DBMS_OUTPUT.PUT_LINE(myData); RETURN 1; END;
当我尝试通过传递超过5000个字符的冗长字符串来调用此函数时,它会给出错误.
请有人帮忙吗
是的,我只传递一个字符串.例如:从双重选择TESTFUNCTION('超过5000个字符');
不,不能那样做.该错误是预期的错误,因为SQL(12c之前的Oracle版本)无法处理长度超过4000字节的字符文字.
如果需要测试函数,请使用PL/SQL,其中字符文字的长度最多为32767个字符(单字节字符集):
这是我们的功能:
注意:从Oracle 10g R2 dbms_output.put_line()
行限制开始是32767字节,在10g R2之前的版本中,行限制是255字节.
create or replace function f1( p_clob in clob ) return number is begin dbms_output.put_line(p_clob); return 1; end;
这是我们用于测试该功能的匿名PL/SQL块:
clear screen; set serveroutput on; declare l_var clob; l_res number; begin l_var := 'aaaaaaaaaaaaaaaaaa.. more than 5000 characters'; l_res := f1(l_var); end;
结果:
anonymous block completed aaaaaaaaaaaaaaaaaa.. more than 5000 characters