zoukankan      html  css  js  c++  java
  • 一个简单的SQL游标示例的存储过程

    USE [Princess]
    GO
    /****** Object:  StoredProcedure [dbo].[p_PaymentTransactions_Insert]    Script Date: 08/10/2012 10:33:12 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[p_PaymentTransactions_Insert]
        @PaymentID integer, @InvoiceNo varchar(10), @BalanceAmount decimal(14,2),@MatchBy int
    AS
        declare @InvoiceIDs varchar(200)
        declare @Balance money
        declare @No varchar(50)
    
        BEGIN TRANSACTION  --事务开始
        insert into Payment_Transactions (PaymentID, InvoiceNo,BalanceDate,BalanceAmount,MatchBy,MatchDate)
        values(@PaymentID, @InvoiceNo,getdate(),@BalanceAmount,@MatchBy,getdate())
    
        select @Balance = Balance from Payments where PaymentID = @PaymentID
        set @Balance = @Balance - @BalanceAmount
        
        --游标读取InvoiceIDs
        declare rs cursor for select InvoiceNo from Payment_Transactions where PaymentID = @PaymentID
        open rs
        fetch next from rs into @No
        while @@FETCH_STATUS=0
        BEGIN
            IF @InvoiceIDs != ''
            BEGIN
                IF CHARINDEX(@No,@InvoiceIDs)<=0 --函数CHARINDEX()判断@InvoiceIDs变量中是否包含@No变量里面的内容
                BEGIN
                    set @InvoiceIDs = isnull(@InvoiceIDs, '') + @No + ','
                END
            END
            ELSE
            BEGIN
                set @InvoiceIDs = @No + ','
            END
            
            fetch next from rs into @No
        end
        close rs
        deallocate rs
        --游标结束
        
        SET @InvoiceIDs = SUBSTRING(@InvoiceIDs,1,LEN(@InvoiceIDs)-1) --去除@InvoiceIDs变量中末尾","
        update Payments set Balance =  @Balance, InvoiceIDs = @InvoiceIDs where PaymentID = @PaymentID
        
        exec p_UpdateInvoice_Balance @InvoiceNo  --调用另外一个存储过程
        
        COMMIT TRANSACTION  --提交事务
  • 相关阅读:
    [洛谷P3674]小清新人渣的本愿
    [洛谷P2698][USACO12MAR]花盆Flowerpot
    [洛谷P4329][COCI2006-2007#1] Bond
    [洛谷P3203][HNOI2010]弹飞绵羊
    [洛谷P1407][国家集训队]稳定婚姻
    [洛谷P3388]【模板】割点(割顶)
    TX2_安装view_team
    tx2的一些系统命令
    tensorflow-cnnn-mnist
    mnist数据集tensorflow实现
  • 原文地址:https://www.cnblogs.com/captainR/p/2631690.html
Copyright © 2011-2022 走看看