Oracle函数返回字符串时,如果字符串长度过大(约超过1850),则会出现字符缓冲区不足的错误。
可以采用出参的方式解决,在编程中再把各出参的值组合。一般编程语言中的字符串可以足够长。
另外,Oracle函数/存储过程中入参中的字符串长度没有如上的限制情况。

例:
procedure sp_tb018_sqlCount( p_Conditions in varchar2,
                               p_Sql1 out varchar2,
                               p_Sql2 out varchar2,
                               p_Sql3 out varchar2)
as
  v_sql varchar2(4500);
begin
  v_sql := 'SELECT COUNT(*)
            FROM MISTABLE002
            LEFT OUTER JOIN MISTABLE018 on MISFIELD018A01 = MISFIELD002A01
            WHERE  '|| p_Conditions ;
           
  p_Sql1 := substr(v_sql,1,   1500);
  p_Sql2 := substr(v_sql,1501,3000);
  p_Sql3 := substr(v_sql,3001,4500);
end sp_tb018_sqlCount;

--不精通Oracle,如有错误望高手指教。

相关文章: