无法在Oracle函数中传递CLOB

 在海那边A-P 发布于 2023-02-07 19:24

我试图在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个字符的冗长字符串来调用此函数时,它会给出错误.

请有人帮忙吗

1 个回答
  • 是的,我只传递一个字符串.例如:从双重选择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
    

    2023-02-07 19:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有