SQL Server 中用While循环替代游标(Cursor的解决方案
原文:https://www.cnblogs.com/swq6413/archive/2012/09/01/2667190.html 在编写SQL批处理或存储过程代码的过程中,经常会碰到有些业务逻辑的处理,需要对满足条件的数据记录逐行进行处理,这个时候,大家首先想到的方案大部分是用“游标”进行处理。 举个例子,在订单管理系统中,客服需要对订单日期为2012-09-01的销售订单进行某个批量操作,比如批量发货操作,后台业务逻辑处理时,需要对满足条件的订单记录进行逐行处理。 我首先是采用“游标”编写的业务逻辑存储过程,SQL代码可以如下: 游标 DECLARE @ORDERID VARCHAR(30) -- 声明局部游标:从订单数据表获取订单日期为2012-09-01,订单类型为Sales的订单编号 DECLARE CURSOR_ORDER CURSOR LOCAL FOR SELECT ORDERID FROM ORDERHD H WHERE ORDERDATE = '2012-09-01' AND H.ORDERTYPE = 'Sales' -- 打开游标 OPEN CURSOR_ORDER FETCH NEXT FROM CURSOR_ORDER INTO @ORDERID WHILE @@FETCH_STATUS = 0 BEGIN /*