Oracle有参数带返回值的存储过程简单例子

14 篇文章 0 订阅
12 篇文章 0 订阅
 

create or replace procedure caf_trackdiffbyId(
       sendid in number,
       userid in varchar ,
       diffnum in number,
       lats in number,
       latn in number,
       lngw in number,
       lnge in number,
       minid out number ,
       maxid out number
) is
currDate date;
minDate date;
maxDate date;
subMin number;

Cursor baseMinCursor is select * from caf_usertrack where datetime<currDate order by id desc ;
Cursor baseMaxCursor is select * from caf_usertrack where datetime>currDate order by id asc ;

begin
  select datetime into currDate from  caf_usertrack where id=sendid and userid=userid and
 lat >= lats and lat <= latn and lng >= lngw and lng <= lnge ;
  begin
      if currDate is not null then
          begin
             minDate := currDate;
             maxDate := currDate;
          end;
      end if;
          
      for sysd in baseMinCursor loop      --取得最小的ID值
        begin       
           subMin := round(to_number(minDate-sysd.datetime)*24*60,2);
           if subMin <= diffnum then
               begin
                  minDate := sysd.datetime;
               end;
            else
               begin
                  minid := sysd.id;
                  dbms_output.put_line('min'||minid);
                  exit;
               end;             
           end if;      
        end;
      end loop;
     
     for sysd in baseMaxCursor loop      --取得最大的ID值
        begin       
           subMin := round(to_number(sysd.datetime-maxDate)*24*60,2);
           if subMin <= diffnum then
               begin
                  maxDate := sysd.datetime;
               end;
            else
               begin
                  maxid := sysd.id;
                  dbms_output.put_line('maxid'||maxid);
                  exit;
               end;             
           end if;      
        end;
      end loop;        
  end;
 
end caf_trackdiffbyId;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值