sql 循环语句几种方式(变量循环,游标循环,事务)
Posted 绅士狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 [email protected]@rowcount set @n=1 while @n<[email protected] begin select @orderNum=OrderNum from PE_Orders where OrderNum=(select Orders from #ttableName where [email protected]) print (@OrderNum) select @[email protected]+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 [email protected] where [email protected] --操作数据库 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 [email protected] -- set @[email protected]+1 set @[email protected][email protected]@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
以上是关于sql 循环语句几种方式(变量循环,游标循环,事务)的主要内容,如果未能解决你的问题,请参考以下文章