1、正常循环语句

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

2、不带事务的游标循环

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   --释放游标

3、带事务的游标循环

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

4、if语句使用示例

declare @a int
set @a=12
if @a>100
begin
print @a
end
else
begin
print 'no'
end

5、while语句使用示例
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
-- 设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。 本条为以前从网上查找获取!

6、临时表和try
-- 增加临时表
select * into #csj_temp from csj
-- 删除临时表 用到try
begin try -- 检测代码开始
drop table #csj_temp
end try
begin catch -- 错误开始
end catch

7、游标循环读记录
declare @temp_temp int
--declare @Cur_Name
--@Cur_Name="aaa"
--------------------------------- 创建游标 --Local(本地游标)
DECLARE aaa CURSOR for select House_Id from House_House where Deleted=0 or deleted is null
----------------------------------- 打开游标
Open aaa
----------------------------------- 遍历和获取游标
fetch next from aaa into @temp_temp
--print @temp_temp
while @@fetch_status=0
begin
--做你要做的事
select * from House_monthEnd where House_Id=@temp_temp
fetch next from aaa into @temp_temp -- 取值赋给变量
--
end
----------------------------------- 关闭游标
Close aaa
----------------------------------- 删除游标
Deallocate aaa

SQL 循环语句几种写法的更多相关文章

  1. sql 循环语句几种方式

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

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

    --第一   ) ,),Orders )) declare @n int,@rows int --select @rows=count(1) from pe_Orders select @rows = ...

  3. ql/sql 循环语句、异常处理、事务处理!

    一.ql sql 循环语句? /*1.loop循环 语法: 声明循环变量 loop 判断循环条件 ,如果循环条件不成立,跳出循if 条件表达式 then exit; end if; 语句块; 改变循环 ...

  4. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

  5. SQL循环语句 详解

    SQL循环语句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+ ...

  6. sql分页的几种写法

    一直想整理下关于sql分页的几种方法,今天终于有时间整理下了.闲话少说直接上sql,先创建一个测试库,测试表以及测试数据,sql语句如下: CREATE DATABASE DBTEST GO USE ...

  7. for循环的三种写法

    第一种写法  传统的方法,遍历数组 String[] arr = { "amy", "heinrich", "cindy", "g ...

  8. javascript之for循环的几种写法

    背景 javascript中的for循环选择多种多样,可你知道其中的差别在哪里吗?什么时候又该用哪种循环才是最佳策略?以上这些是本文想讨论的,欢迎交流. 说明 1.20年前的for循环 //20年前的 ...

  9. PL/SQL 循环语句

    1.基本 LOOP 循环语句 语法: LOOP 语句序列; END LOOP; 其中,语句序列中需要一个EXIT语句或一个EXIT WHEN语句来中断循环. 实例: DECLARE x ) :; BE ...

随机推荐

  1. boost multi index

    Boost.MultiIndex makes it possible to define containers that support an arbitrary number of interfac ...

  2. Vue项目中添加锁屏功能

    0. 直接上 预览链接 Vue项目中添加锁屏功能 1. 实现思路 ( 1 ) 设置锁屏密码 ( 2 ) 密码存localStorage (本项目已经封装h5的sessionStorage和localS ...

  3. CPU、内存、磁盘三者的关系

    参考:https://blog.csdn.net/weini1111/article/details/70849332 cpu是大脑,计算数据用的. 内存是草稿纸,开着电脑一直都在用里边的数据,如果断 ...

  4. Let’s Encrypt Wildcard 免费泛域名SSL证书获取安装

    2018 年 1 月Let’s Encrypt CA 宣布免费提供通配符证书(Wildcard certificate).通配符证书是一种可被多个子域使用的公钥证书.这意味着,单个证书可用于提供多台服 ...

  5. 数据访问层的基类BaseDALSQL

    using System; using System.Text; using System.Collections; using System.Data; using System.Data.Comm ...

  6. Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库

    废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...

  7. PAT_A1100#Mars Numbers

    Source: PAT A1100 Mars Numbers (20 分) Description: People on Mars count their numbers with base 13: ...

  8. nginx-413

    修改nginx配置文件:client_max_body_size 300M 修改php.ini upload_max_filesize | post_max_size

  9. Java构造函数(构造器)

    构造函数是用于在对象创建后立即初始化对象的代码块.构造函数的结构看起来类似于一个方法. 声明构造函数 构造函数声明的一般语法是: 1 2 3 <Modifiers> <Constru ...

  10. webservice的使用-axis1-01

    1.搭建axis服务器 1.1 下载axis-bin-1_4.zip文件并解压 1.2 拷贝\axis-1_4\webapps目录下的axis到tomcat目录下的webapps目录下并启动 1.3 ...