Sql 游标操作

Declare @Oid int  
Declare @PriceTotal float

--定义游标
Declare cur    cursor for
Select Oid 
from orders 
where oid in (select oid from ochild where Ochild.MID = @ProductSN) 
    And Orders.PID = @SupplierSN
    And (Orders.LastDate >= @StartDate) 
    And (Orders.LastDate <= @EndDate)
--打开游标
open cur
--植入变量
fetch next from cur into @Oid 
while(@@fetch_status=0)--执行后的游标状态作为循环条件
begin
    Set @PriceTotal = 0
    Select @PriceTotal = sum( Ochild.fact * Ochild.num) from Ochild Where Ochild.Oid = @Oid
    --执行操作
    UPDATE    Orders
    SET      fact =  @PriceTotal
    Where Orders.Oid = @Oid
  
    --提前下一位信息
    fetch next from cur into @Oid
end
close cur--关闭游标
deallocate cur--删除游标

平时的应用中还真的很少用游标,并不是游标效率低而不用

只是能用其他方法能实现的话,就不优先考虑采用游标;

posted @ 2012-06-07 16:58  叮/当  阅读(252)  评论(0编辑  收藏  举报