• 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 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

  • 相关阅读:
    前端的推荐资源
    Python 学习日志(一)
    遇到的一些elasticsearch报错信息整理
    记hyper-v导致的privoxy error(fatal error: can't bind to 127.0.0.1:1081(error number:0)),附解决方法
    Java动态代理学习笔记
    spring依赖注入中p命名空间和c命名空间区别
    python "二维" 字典(字典嵌套)
    [剑指offer] 数组中的逆序对
    [剑指offer] 复杂链表的复制
    [剑指offer] 8-10做题笔记
  • 原文地址:https://www.cnblogs.com/ajunForNet/p/3715651.html
Copyright © 2020-2023  润新知