我试图在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;
Run Code Online (Sandbox Code Playgroud)
当我尝试通过传递超过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;
Run Code Online (Sandbox Code Playgroud)
这是我们用于测试该功能的匿名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;
Run Code Online (Sandbox Code Playgroud)
结果:
anonymous block completed
aaaaaaaaaaaaaaaaaa.. more than 5000 characters
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6682 次 |
最近记录: |