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 @[email protected]+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
时间: 2024-09-30 21:29:47

sql 循环语句几种方式(变量循环,游标循环,事务)的相关文章

预处理(防止sql注入的一种方式)

<!--- 预处理(预编译) ---> <?php/* 防止 sql 注入的两种方式: 1. 人为提高代码的逻辑性,使其变得更严谨,滴水不漏. 比如说 增加判断条件,增加输入过滤等,但是智者千虑必有一失.(不推荐) 2. sql 语句的预处理*/ // 预处理: 就是在程序正式编译之前,事先处理,因为有些功能实现是一样的,只是发生了一些简单的值替换 /* ********** 预处理的原理: ********* insert into register_info values(?,?,?

java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner)

package com.unmi; import java.io.*; import org.apache.tools.ant.*; import org.apache.tools.ant.taskdefs.*; import org.apache.tools.ant.types.*; /** * 调用 ant.jar 的 SQLExec 执行 SQL 脚本文件 * @author Unmi */ public class AntExecSql { /** * @param args */ pu

python(3)- 循环语句:从最内层跳出多层循环

跳出多层循环:三层循环,最里层直接跳出3层 方法一: 在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def work():                                  #定义函数     for i in range(5):         print("i=", i)         for j in range(5):        

循环语句 while,do while ,for 循环

循环语句 while do while for while (条件){ 条件满,时执行的代码 } 例: let num = 5; while(num){num - -; console .log(4,3,2,1,0) } 输出4,3,2,1,0. do {执行的代码}while(条件): (是先执行一遍在做判断) for(初始化表达式:条件判断表达式:改变循环条件表达式){执行的代码} 例:(1:2:3){4} (执行顺序是1243 243 243) //for 循环还可以用来遍历数组 let

操作系统+编程语言的分类+执行python程序的两种方式+变量

1.什么是操作系统? 操作系统就是一个协调\管理\控制计算机硬件资源与软件资源的一个控制程序. 2.为何要操作系统? a.把复杂的硬件操作封装成简单的功能\接口用来给用户或者程序来使用(文件) b.把应用程序对硬件的竞争变得有序 3.如何用操作系统? 一套完整的计算机系统分为3层: 应用程序层 操作系统层 计算机硬件层 编程语言的分类 1.机器语言:直接使用二进制指令去编高于写程序(直接操作硬件) 优点:计算机无障碍理解,运行效率高. 缺点:开发效率低 2.汇编语言:使用英文标签代替二进制指令去

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

java中for循环的几种方式

比如定义一个数组int a[]={1, 2, 3, 4},下面我们罗列一下遍历这个数组的方法 1 for(;;) 这也是最常用的方法,不多做解释.代码如下 int a[] = {1, 2, 3, 4}; for(int i=0; i<a.length; i++){ System.out.println(a[i]); } 2 for(:) 先上代码: int a[] = {1, 2, 3, 4}; for(int i:a){ System.out.println(i); } for(int i:a

JS循环数组几种方式

data1 = []; data1.push({ value: "", text: "请选择" }); json.data.result.forEach(function (e) { data1.push(e); }); var index=0; while (index < json.data.result.length) { data1.push(json.data.result[index++]); } var index = 0; do{ data1.

javaScript定义函数的三种方式&amp;变量的作用域

一.函数定义 方式1.普通方式定义函数 function 函数名(参数n){ 函数体 } function add(a,b){ return a+b; } 方式2.直接量定义函数 var 函数名=function(参数n){ 函数体 } var add=function(a,b){ return a+b; } 方式三.构造方式定义函数 var 函数名=new Function(参数n,函数体); var add = new Function('a,b','return a+b;'); 二.变量的