我正在尝试在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个字符的冗长字符串来调用此函数时,它会给出错误。
请有人帮忙吗
答案 0 :(得分:6)
是的,我只是作为一个字符串传递。例如:从双重选择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