sql 循环语句几种方式(变量循环,游标循环,事务)

 

--第一
 
declare @orderNum varchar(255)
create table #ttableName(id int identity(1,1),Orders varchar(255))
declare @n int,@rows int

insert #ttableName(orders) select orderNum from FOrders where orderId<50 --select @rows=count(1) from pe_Orders select @rows =@@rowcount set @n=1 while @n<=@rows   begin     select @orderNum=OrderNum from PE_Orders where OrderNum=(select Orders from #ttableName where id=@n)     print (@OrderNum)     select @n=@n+1   end drop table #ttableName

 

 
 
--第二
 
declare @tmp varchar(50)--临时变量,用来保存游标值
declare y_curr cursor for --申明游标 为orderNum
select orderNum from FOrders where orderId<50
open y_curr --打开游标
fetch next from Y_curr into @tmp ----开始循环游标变量
while(@@fetch_status=0)---返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
  begin
    print (@tmp)
    update FOrders set Functionary+@tmp where orderNum=@tmp --操作数据库
    fetch next from y_curr into @tmp --开始循环游标变量
  end
close y_curr--关闭游标
deallocate y_curr --释放游标

 

--第三

select orderNum,userName,MoneyTotal into #t from FOrders po 
DECLARE @n int,@error int
--set @n=1 
set @error=0
  BEGIN TRAN --申明事务
    declare @tmp varchar(50),@userN varchar(50) --临时变量,用来保存游标值
    declare y_curr cursor for --申明游标 为orderNum,userName
    select orderNum,userName from FOrders where Orderid<50
    open y_curr
    fetch next from y_curr into @tmp,@userN
    while @@fetch_status = 0
      BEGIN
        select isnull(sum(MoneyTotal),0),orderNum from #t where username=@userN
        -- set @n=@n+1
        set @error=@error+@@error--记录每次运行sql后 是否正确 0正确
        fetch next from y_curr into @tmp,@userN
      END
    IF @error=0
    BEGIN
  commit tran --提交
END
ELSE
  BEGIN
    ROLLBACK TRAN --回滚
  END
close y_curr
deallocate y_curr
DROP TABLE #t

 

转载于:https://www.cnblogs.com/fm168/p/5464132.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值