调用存诸过程将返回值打印出来

本文介绍了一个使用 Oracle PL/SQL 编写的函数 cfun_cusellratedetail_prefix,该函数接收一个编号作为参数,并返回与该编号相关的区域代码前缀字符串。通过对数据进行遍历和条件判断,实现将连续的区域代码通过特定符号连接起来,以减少返回字符串的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

111111111111

 

declare 
Result varchar2(4000):='';
begin
  Result:= cfun_cusellratedetail_prefix(1009388);
  dbms_output.put_line(Result);
end;

 

 

 

create or replace
function cfun_cusellratedetail_prefix(p_numcusellratedmsguid in number) return varchar2 is
  Result varchar2(4000):='';
  l_lastprefix varchar2(100) :='0';
  l_sign varchar2(10);
  l_begin number;
  l_end number;

begin

  for cur_rec in (  select trim(vc2areacode) vc2areacode from ct_cusellratedetail_prefix where numcusellratedmsguid = p_numcusellratedmsguid
  AND NUMVALIDFLAG=1 order by vc2areacode  ) loop
        if length(Result) > 3950 then
         --dbms_output.put_line(p_numdmsguid||'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
        -- dbms_output.put_line(Resultc);
         exit ;
      end if;

      if  to_char(to_number(l_lastprefix) +1) = cur_rec.vc2areacode  then
          if l_sign is null then
             l_sign := '-';
             Result :=substr(result,1,length(result)-1 )||l_sign;

          end if;
      else
          if l_sign = '-' then

              Result :=Result|| l_lastprefix||';'||cur_rec.vc2areacode||';';
          else
              Result :=Result||cur_rec.vc2areacode||';';
          end if;
           l_sign := '';
      end if;
      l_lastprefix := cur_rec.vc2areacode;
  end loop;
  if l_sign = '-' then
     Result :=Result|| l_lastprefix;
     return  Result;

  else
      return(case when length( Result) > 0 then substr(result,1,length(result)-1 ) else '' end );
  end if;

end cfun_cusellratedetail_prefix;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值