--提取数据 fetch first from orderNum_02_cursor fetch relative 3 from orderNum_02_cursor fetch next from orderNum_02_cursor fetch absolute 4 from orderNum_02_cursor fetch next from orderNum_02_cursor fetch last from orderNum_02_cursor fetch prior from orderNum_02_cursor select * from bigorder where orderNum='ZEORD003402'
--提取数据赋值给变量 declare @OrderId int fetchabsolute3from orderNum_02_cursor into @OrderId select @OrderId asid select * from bigorder where orderNum='ZEORD003402'
-- 循环检索数据 DECLARE @order_num INT; DECLARE orders_cursor CURSOR FORSELECT order_num FROM orders ORDERBY order_num; OPEN orders_cursor; FETCH NEXT FROM orders_cursor INTO @order_num; WHILE @@FETCH_STATUS=0 BEGIN FETCHNEXTFROM orders_cursor INTO @order_num; END; CLOSE orders_cursor DEALLOCATE orders_cursor;
--------------------------------------------------- -- 进一步对数据实际处理 DECLARE @order_num INT; DECLARE @order_total MONEY; --每个订单合计 DECLARE @total MONEY; --总合计 SET @total=0; DECLARE orders_cursor CURSOR FORSELECT order_num FROM orders ORDERBY order_num; OPEN orders_cursor; -- fetch取每一个@order_num FETCH NEXT FROM orders_cursor INTO @order_num; WHILE @@FETCH_STATUS=0 BEGIN -- 执行存储过程计算每个订单合计存入@order_total EXEC ordertotal @order_num,1,@order_total OUTPUT -- 每检索一个@order_total就set到@total上 SET @total=@total+@order_total FETCHNEXTFROM orders_cursor INTO @order_num; END CLOSE orders_cursor DEALLOCATE orders_cursor; -- 返回结果 SELECT @total AS GrantTotal;
--1.声明游标 declare orderNum_03_cursor cursorscroll for (select OrderId ,userId from bigorder where orderNum='ZEORD003402') --2.打开游标 open orderNum_03_cursor --3.声明游标提取数据所要存放的变量 declare @OrderId int ,@userId varchar(15) --4.定位游标到哪一行 fetchFirstfrom orderNum_03_cursor into @OrderId,@userId --into的变量数量必须与游标查询结果集的列数相同 while @@fetch_status=0--提取成功,进行下一条数据的提取操作 begin if @OrderId=122182 begin Update bigorder Set UserId='123'WhereCurrentof orderNum_03_cursor --修改当前行 end if @OrderId=154074 begin --删除当前行 Delete bigorder WhereCurrentof orderNum_03_cursor end --移动游标 fetchnextfrom orderNum_03_cursor into @OrderId ,@userId end --关闭游标 close orderNum_03_cursor --释放游标 deallocate orderNum_03_cursor