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,如有错误望高手指教。