mysql 32k 限制_ORA-22828 输入样式或替换参数超过了32k大小限制

今天调试程序报以下错误: ORA-22828: input pattern or replacement parameters exceed 32K size limit22828. 00000 - input

今天调试程序报以下错误:

ORA-22828: input pattern or replacement parameters exceed 32K size limit

22828. 00000 - "input pattern or replacement parameters exceed 32K size limit"

*Cause: Value provided for the pattern or replacement string in the form of

VARCHAR2 or CLOB for LOB SQL functions exceeded the 32K size limit.

*Action: Use a shorter pattern or process a long pattern string in multiple

passes.

可用以下脚本重现:

declare

cb clob;

ret_cb CLOB;

begin

cb := rpad('x', 32767, 'x')||'x';

ret_cb := '#result#';

ret_cb := replace(ret_cb, '#result#', cb);

end;

/

解决方式如下:

编写函数:

create or replace function replace_with_clob

(i_source in clob

,i_search in varchar2

,i_replace in clob

) return clob is

l_pos pls_integer;

begin

l_pos := instr(i_source, i_search);

if l_pos > 0 then

return substr(i_source, 1, l_pos-1)

|| i_replace

|| substr(i_source, l_pos+length(i_search));

end if;

return i_source;

end replace_with_clob;

改写后:

declare

cb clob;

ret_cb CLOB;

begin

cb := rpad('x', 32767, 'x')||'x';

ret_cb := '#result#';

ret_cb := replace_with_clob(ret_cb, '#result#', cb);

dbms_output.put_line(substr(ret_cb, 1, 100));

end;

/

执行成功!

-----------------------------------

Dylan Presents.

本文永久更新链接地址:,

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值