SQL循环语句的几种方式
2017-08-11 18:24
519 查看
--第一
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 pe_Orders 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 @orderN varchar(50)--临时变量,用来保存游标值
declare y_curr cursor for --申明游标 为orderNum
select orderNum from pe_Orders where orderId<50
open y_curr --打开游标
fetch next from Y_curr into @orderN ----开始循环游标变量
while(@@fetch_status=0)---返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
begin
print (@orderN)
update pe_Orders set Functionary+@orderN where orderNum=@orderN --操作数据库
fetch next from y_curr into @orderN --开始循环游标变量
end
close y_curr--关闭游标
deallocate y_curr --释放游标
--第三
select orderNum,userName,MoneyTotal into #t from pe_Orders po
DECLARE @n int,@error int
--set @n=1
set @error=0
BEGIN TRAN --申明事务
declare @orderN varchar(50),@userN varchar(50) --临时变量,用来保存游标值
declare y_curr cursor for --申明游标 为orderNum,userName
select orderNum,userName from PE_Orders where Orderid<50
open y_curr
fetch next from y_curr into @orderN,@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 @orderN,@userN
END
IF @error=0
BEGIN
commit tran --提交
END
ELSE
BEGIN
ROLLBACK TRAN --回滚
END
close y_curr
deallocate y_curr
DROP TABLE #t
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 pe_Orders 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 @orderN varchar(50)--临时变量,用来保存游标值
declare y_curr cursor for --申明游标 为orderNum
select orderNum from pe_Orders where orderId<50
open y_curr --打开游标
fetch next from Y_curr into @orderN ----开始循环游标变量
while(@@fetch_status=0)---返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
begin
print (@orderN)
update pe_Orders set Functionary+@orderN where orderNum=@orderN --操作数据库
fetch next from y_curr into @orderN --开始循环游标变量
end
close y_curr--关闭游标
deallocate y_curr --释放游标
--第三
select orderNum,userName,MoneyTotal into #t from pe_Orders po
DECLARE @n int,@error int
--set @n=1
set @error=0
BEGIN TRAN --申明事务
declare @orderN varchar(50),@userN varchar(50) --临时变量,用来保存游标值
declare y_curr cursor for --申明游标 为orderNum,userName
select orderNum,userName from PE_Orders where Orderid<50
open y_curr
fetch next from y_curr into @orderN,@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 @orderN,@userN
END
IF @error=0
BEGIN
commit tran --提交
END
ELSE
BEGIN
ROLLBACK TRAN --回滚
END
close y_curr
deallocate y_curr
DROP TABLE #t
相关文章推荐
- C#中产生SQL语句的几种方式
- sql语句删除数据库表的几种方式及区别
- mysql 复制表的几种方式以及常用的sql语句
- MySQL笔记-执行SQL语句的几种方式
- C#中产生SQL语句的几种方式
- sql 循环语句几种方式(变量循环,游标循环,事务)
- C#中产生SQL语句的几种方式
- 优化sql 语句的几种方式
- mysql 复制表的几种方式以及常用的sql语句
- sql语句删除数据库表的几种方式及区别
- mybatis 构建SqlSessionFactory的几种方式 以及调用sql映射语句的几种方式
- 常用几种数据库,取前10条记录的sql语句写法
- PL/SQL 流程控制语句-条件结构,循环结构
- 死循环内存回收,sql语句效率,项目结尾阶段优化反思
- 直接用SQL语句读取几种常见的文件格式中的数据
- Mybatis注解-注解方式的动态SQL语句
- Hibernate SQL常量的查询语句时,只返加第一个字符的解决方式
- 两种方式定位执行效率较低的SQL 语句
- PL/SQL 循环语句
- 查看LINQ生成SQL语句的几种方法