• sql server 创建存储过程,游标,事务


    CREATE PROCEDURE [dbo].[M_CreateInventoryCk]
    AS 
        DECLARE @tran_error INT;--记录错误数量
        
        DECLARE @cursor CURSOR  --游标
        
        BEGIN
    
            SET @cursor=cursor for select LogistHead.[Guid],OrderHead.Guid,LogistHead.Weight,LogistHead.Pack_No From dbo.Kj_Logistics_Head LogistHead
       INNER JOIN dbo.Kj_Order_Head OrderHead ON OrderHead.Guid=LogistHead.OrderPK AND OrderHead.Doc_Status='A023' 
        
            OPEN @cursor
            FETCH NEXT FROM @cursor INTO @M_ID, @OrderGuid, @CURSORWeight,
                @CURSORPack_No
            WHILE @@FETCH_STATUS = 0 
                BEGIN
                
                    
                    BEGIN TRY 
                        BEGIN TRAN
                        SET @tran_error = 0;
            
                        
                        INSERT  INTO [dbo].[Kj_Ni_Inventory_Head]
                                ( [Guid] ,
                                  ShiperName
                                )
                                SELECT  GETDATE()--汇总时间
                                        ,
                                        ( CASE OrderHead.Biz_Type
                                            WHEN '1' THEN 'B2CJJ'
                                            WHEN '3' THEN 'BSJ'
                                            ELSE ''
                                          END ) ,
                                        CASE WHEN logistHead.Customs_Code IN (
                                                  '2314', '2381' ) THEN '320220'
                                             WHEN logistHead.Customs_Code IN (
                                                  '2308' ) THEN '320150'
                                             ELSE '海关编码不是苏州和南京'
                                        END ,
                                        ( SELECT    REPLACE(LTRIM(NEWID()), '-',
                                                            '')
                                        )
                                FROM    dbo.Kj_Logistics_Head logistHead
                                        INNER JOIN dbo.Kj_Order_Head OrderHead ON logistHead.OrderPK = OrderHead.Guid
                                
       
                     
                    END TRY
    
                    BEGIN CATCH
                        PRINT '出现异常,错误编号:' + CONVERT(VARCHAR, ERROR_NUMBER())
                            + ',错误消息:' + ERROR_MESSAGE()
                        SET @tran_error = @tran_error + 1
                    END CATCH
    
                    IF ( @tran_error > 0 ) 
                        BEGIN
                        --执行出错,回滚事务
                            ROLLBACK TRAN;
            
                        END
                    ELSE 
                        BEGIN
                        --没有异常,提交事务
                            COMMIT TRAN;
                            
                        END
                    FETCH NEXT FROM @cursor INTO @M_ID, @OrderGuid, @CURSORWeight,
                        @CURSORPack_No
                END
    
      
            CLOSE @cursor
            DEALLOCATE @cursor
        END
  • 相关阅读:
    MVC4学习-View(0)
    javascript与常用正则表达式
    uhfreader&rfid标签测试
    WebClient文件上传很方便哈
    NAudio的简单用法
    与wmi交互,调非托管代码,单元测试遇到的一些问题
    我在这里骑美团单车被交警罚了50元,这个地方不能骑共享单车大家留意了
    发邮件,美化table格式
    学习jwt的简单使用
    学习redis的基本使用
  • 原文地址:https://www.cnblogs.com/v-dai/p/5941950.html
Copyright © 2020-2023  润新知