存储过程 嵌套游标问题

早上踩了一个坑,在写一个存储过程时,需要用到嵌套游标,在传参时犯了一个错! 参数变量名不能与已有的表字段名相同,否则会不断自循环。。。

有坑的代码如下:

cursor cur_get_ips is
      select T.IP
        FROM eamp_mobile_devices_info T
       WHERE T.date_updated >= trunc(sysdate) - 1
         AND T.date_updated < trunc(sysdate)
         AND T.ip is not null
       group by T.IP
      having count(1) < p_count;
    cursor cur_get_attendance(ip IN VARCHAR2) is
      SELECT T.ID_ATTENDANCE
        FROM eamp_mobile_devices_info T
       WHERE T.IP = ip
         AND T.date_updated >= trunc(sysdate) - 1
         AND T.date_updated < trunc(sysdate);
  
  begin
    FOR CUR_IP IN cur_get_ips LOOP
      V_IP := CUR_IP.IP;
      open cur_get_attendance(V_IP);
           loop
           fetch cur_get_attendance
            into V_ID;
      exit when cur_get_attendance%notfound;
        SELECT P.EMPNO
          INTO V_EMPNO
          FROM eamp_attendance_original_data P
         WHERE P.ID_EAP_AT_ORIG_DATA = V_ID;
      
        MERGE INTO EAMP_DOUBT_IP_INFO P
        USING (select V_ID AS ID from dual) PP
        ON (P.ID_EAP_AT_ORIG_DATA = PP.ID)
        WHEN NOT MATCHED THEN
          INSERT
            (ID_EAMP_DOUBT_IP,
             ID_EAP_AT_ORIG_DATA,
             IP,
             EMPNO,
             SUSPECTED_FLAG,
             CREATED_BY,
             DATE_CREATED,
             UPDATED_BY,
             DATE_UPDATED)
          VALUES
            (sys_guid(),
             V_ID,
             V_IP,
             V_EMPNO,
             'Y',
             USER,
             SYSDATE,
             USER,
             SYSDATE);
      end loop la;
      close cur_get_attendance;
    END LOOP;
标红处就是问题所在!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值