将大字符串值设置为CLOB时引发错误

将大字符串值设置为CLOB时引发错误

本文介绍了"PLS-00172:字符串文字太长"将大字符串值设置为CLOB时引发错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有CLOB字段的存储过程.当我以较大的值(超过33K个字符)调用存储过程时,出现错误"PLS-00172:字符串文字太长"

I have a stored procedure which has a CLOB field. When i invoke the stored procedure with a large value (over 33K characters) I get the error "PLS-00172: string literal too long"

我存储的过程

create or replace procedure P(c clob) is
 begin
   dbms_output.put_line('dbms_lob.getlength(c)');
 end;

调用存储过程

declare
    C CLOB := 'large text over 33k characters';
begin
    P(C => C);
end;
/

问题:

推荐答案

'< Text>'是varchar2-Literal,然后将其自动转换为CLOB.要将大型文字转换为Clob,可以将其拆分为不同的部分,然后合并它们:

'<Text>' is a varchar2-Literal that then is automatically converted to CLOB. To Convert a large literal to clob you can split it to different part and then concat them:

declare
  c clob := TO_CLOB('First 32k characters')||TO_CLOB('Second 32k characters')||...;
begin
    P(C => C);
end;
/

这篇关于"PLS-00172:字符串文字太长"将大字符串值设置为CLOB时引发错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 05:14