SummerRain

软件开发/信息安全
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle函数返回超长字符串问题

Posted on 2005-08-13 14:53  SummerRain  阅读(2720)  评论(2编辑  收藏  举报

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