gpt4 book ai didi

oracle - 无法在 Oracle 函数中传递 CLOB

转载 作者:行者123 更新时间:2023-12-02 11:33:25 24 4
gpt4 key购买 nike

我正在尝试将 CLOB 作为 oracle 函数中的输入参数传递。该函数创建成功,但是当我尝试传递一个很长的字符串时,它给出

ora-01704 string literal too long

错误。

以下是我的功能:

CREATE OR REPLACE FUNCTION mySchema.TESTFUNCTION(myData IN CLOB)
RETURN INT
AS
BEGIN
DBMS_OUTPUT.PUT_LINE(myData);
RETURN 1;
END;

当我尝试通过传递超过 5000 个字符的长字符串来调用此函数时,会出现错误。

谁能帮忙

最佳答案

yes, I pass as a string only. Eg: select TESTFUNCTION('more than 5000 chars') from dual;

不,不能那样做。该错误是预期的错误,因为 SQL(12c 之前的 Oracle 版本)无法处理长度超过 4000 字节的字 rune 字。

如果您需要使用 PL/SQL 测试函数,其中字 rune 字的长度最多可达 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 block :

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

关于oracle - 无法在 Oracle 函数中传递 CLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com