• sqlserver 游标


    游标使用

    --新建ERP临时表
    if object_id('tempdb..#ERP_interface') is not null 
         drop table #ERP_interface
        
    --将ERP中间表,写入条码系统临时表
    select * into #ERP_interface  from 
    openquery(SYN_ERP, 'select * from FYG.FYG_INV_TRANS_INT_TEMP st ')
    WHERE TS>'2016-01-01'
    
    --select * from #ERP_interface
    
    --新建条码临时表
    if object_id('tempdb..#BarCode_interface') is not null 
         drop table #BarCode_interface
    
    --将oracleinterface状态为1的数据,写入条码系统临时表
    
    select * into #BarCode_interface from [WMS_BarCode_V10_SH].[dbo].[OracleInterface] 
    where status<>2 and operatetime>'2016-01-01' and status=1
    
    --select * from #BarCode_interface
    
    DECLARE @BarcodeId varchar(255)
    DECLARE @TranceNo varchar(255)
    
    DECLARE My_Cursor CURSOR                             --定义游标
    FOR (SELECT id FROM #BarCode_interface)                 --查出需要的集合放到游标中
    OPEN My_Cursor;                                      --打开游标
    FETCH NEXT FROM My_Cursor INTO @BarcodeId;           --读取第一行数据
    WHILE @@FETCH_STATUS = 0
        BEGIN
    
        UPDATE [WMS_BarCode_V10_SH].[dbo].[LabelTransactionInfo]
           SET [Status] = 1
         WHERE transactionid=@BarcodeId
    
            select @TranceNo=TraceNo from #BarCode_interface where id=@BarcodeId;
            
        UPDATE [WMS_BarCode_V10_SH].[dbo].[BizTransactionInfo]
           SET [Status] = 2      
         WHERE [WMS_BarCode_V10_SH].[dbo].[BizTransactionInfo].Traceno=@TranceNo
            
        if exists (select * from #ERP_interface where codebar_id=@BarcodeId and transaction_reference=@TranceNo)
                begin
                    DECLARE @ERRORMESSGAE varchar(255)
                    DECLARE @STATUS NVARCHAR(255)
                    select @STATUS=[STATUS],@ERRORMESSGAE=ERROR_EXPLANATION from #ERP_interface where codebar_id=@BarcodeId and transaction_reference=@TranceNo
                    IF(@STATUS IS NULL OR @STATUS='I')
                        PRINT 'IS DOING'
                    ELSE
                        UPDATE [WMS_BarCode_V10_SH].[dbo].[OracleInterface] SET STATUS=-1,errormessage=@ERRORMESSGAE WHERE ID=@BarcodeId;
                end
            else
                BEGIN
                    UPDATE [WMS_BarCode_V10_SH].[dbo].[OracleInterface] SET STATUS=2 WHERE ID=@BarcodeId;
                END       
                
            FETCH NEXT FROM My_Cursor INTO @BarcodeId;
        END
    CLOSE My_Cursor;                                     --关闭游标
    DEALLOCATE My_Cursor;                                 --释放游标
  • 相关阅读:
    Java基础教程
    一个RDBMS左连接SQL执行计划解析
    hive时间日期函数及典型场景应用
    ETL数据采集方法
    数据仓库保存历史数据方法之拉链表
    NAS服务器局域网内IPad、手机、电视盒子等联网播放
    转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360
    [转]office2010一直卡在“正在受保护的视图中打开”
    [转]PROE传动链条的装配教程
    linux下svn定时更新项目
  • 原文地址:https://www.cnblogs.com/xyzabc0004/p/5277327.html
Copyright © 2020-2023  润新知