《带游标的存储过程的使用》存储过程不使用游标的另一种写法

博客介绍了如何在存储过程中不使用游标,通过FOR循环实现同样的功能,提供了一种新的编程思路。

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

很Happy,通过看代码学会了另一种写法,将代码改造如下:

表结构不变。


DECLARE
cst_SYNC_MAX constant integer := 5;
cst_SYNC_NEW constant integer := 1;
cst_SYNC_OLD constant integer := 0;
acount integer := 0;
BEGIN
   for c in (SELECT w.ID,
                    w.userName,
                    w.userAge,
                    w.userNumber
               FROM wawa w
              WHERE w.sync_flag = cst_SYNC_NEW
	      AND ROWNUM < cst_SYNC_MAX) LOOP
             
   begin
      SELECT count(1)
        INTO acount
        FROM test  t
       WHERE t.id = c.id;
       DBMS_OUTPUT.PUT_LINE('acount = ' || acount);


      if(acount>0) then
         UPDATE test
            SET userName   = c.username,
                userAge    = c.userage,
                userNumber = c.usernumber
          WHERE id = c.id; 
      end if;
  
      if(acount<=0) then
     	   INSERT INTO test
            (test.ID,
             test.userName,
             test.userAge,
             test.userNumber,
             test.sync_date)
         VALUES
            (c.id,
             c.username,
             c.userage,
             c.usernumber,
             sysdate);
      end if;
  
      UPDATE wawa
         SET sync_flag = cst_SYNC_OLD
       WHERE ID = c.id;
   end;
   END LOOP;
   DBMS_OUTPUT.PUT_LINE('End of the procedure');
END;

说明:这种写法里没有显式定义游标,而是使用了一个FOR循环,比较新奇,不知道这算不算是隐式游标...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值