Sql Server使用cursor处理重复数据过程详解


/************************************************************ 
 * Code formatted by setyg 
 * Time: 2014/7/29 10:04:44 
 ************************************************************/ 
 
CREATE PROC HandleEmailRepeat 
AS  
DECLARE email CURSOR  
FOR 
  SELECT e.email 
     ,e.OrderNo 
     ,e.TrackingNo 
  FROM  Email20140725 AS e 
  WHERE e.[status] = 0 
  ORDER BY 
      e.email 
     ,e.OrderNo 
     ,e.TrackingNo 
 
BEGIN 
  DECLARE @@email       VARCHAR(200) 
      ,@firstEmail     VARCHAR(200) 
      ,@FirstOrderNO    VARCHAR(300) 
      ,@FirstTrackingNO   VARCHAR(300) 
      ,@NextEmail      VARCHAR(200) 
      ,@@orderNO      VARCHAR(300) 
      ,@NextOrderNO     VARCHAR(50) 
      ,@@trackingNO     VARCHAR(300) 
      ,@NextTrackingNO   VARCHAR(50) 
   
  BEGIN 
    OPEN email; 
    FETCH NEXT FROM email INTO @firstEmail,@FirstOrderNO, @FirstTrackingNO; 
    FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO, @NextTrackingNO; 
    IF @NextEmail!=@firstEmail 
    BEGIN 
      INSERT INTO Email20140725Test 
       ( 
        email 
        ,OrderNo 
        ,TrackingNo 
       ) 
      VALUES 
       ( 
        @firstEmail 
        ,@FirstOrderNO 
        ,@FirstTrackingNO 
       );  
      SET @@email = @NextEmail; 
      SET @@orderNO = @NextOrderNO; 
      SET @@trackingNO = @NextTrackingNO; 
    END 
    ELSE 
    BEGIN 
      SET @@email = @NextEmail; 
      SET @@orderNO = @FirstOrderNO+'、'+@NextOrderNO; 
      SET @@trackingNO = @FirstTrackingNO+'、'+@NextTrackingNO; 
    END 
     
     
     
    FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO,@NextTrackingNO 
    WHILE @@fetch_status=0 
    BEGIN 
      IF @NextEmail=@@email 
      BEGIN 
        IF (@NextOrderNO!=@@orderNO) 
          SET @@orderNO = @@orderNO+'、'+@NextOrderNO 
         
        PRINT 'orderNO:'+@@orderNO  
         
        IF (@@trackingNO!=@NextTrackingNO) 
          SET @@trackingNO = @@trackingNO+'、'+@NextTrackingNO 
         
        PRINT 'trackingNO:'+@@trackingNO 
      END 
      ELSE 
      BEGIN 
        INSERT INTO Email20140725Test 
         ( 
          email 
          ,OrderNo 
          ,TrackingNo 
         ) 
        VALUES 
         ( 
          @@email 
          ,@@orderNO 
          ,@@trackingNO 
         ); 
        SET @@email = @NextEmail; 
        SET @@orderNO = @NextOrderNO; 
        SET @@trackingNO = @NextTrackingNO; 
      END 
      FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO, @NextTrackingNO; 
    END 
    CLOSE email; --关闭游标 
    DEALLOCATE email; --释放游标 
  END 
END



相关阅读:
Ubuntu/Mint添加不了PPA源的原因及修复方法
原生JS实现-星级评分系统的简单实例
MySQL的源码安装及使用UDFs进行数据自动更新的教程
win7系统出现蓝屏并提示错误代码0x0000005A的原因及解决方法
Android中Activity的生命周期探讨
javascript中DOM复选框选择用法实例
javascript学习笔记之函数定义
javascript利用apply和arguments复用方法
jQuery简单实现仿京东商城的左侧菜单效果代码
详细分析使用AngularJS编程中提交表单的方式
C#中简单的拆箱操作用法实例分析
java自定义线程模型处理方法分享
解析php中获取url与物理路径的总结
如何解决局域网内mysql数据库连接慢
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 大龙湫之行作文800字 教师产假请假条范文多篇 我与我的哥哥作文600字 打屁股的哲学 我不算什么,别那么骗我作文1600字 请原谅,有时候,我就是这样... 小学六年级作文500字:邂逅 区纪委落实党风廉政建设纪委监督责任工作报告 要懂得舍弃 回头看 自己的20个年头 遗憾,另一种美800字 养龟记(三)作文400字 校园天使 停车位 村儿娘 留?秋风作文400字 2015计算机管理制度 人民满意公务员卫生局长先进事迹材料 勇敢的小刺猬作文250字 2016除夕QQ群祝福语 暗恋过后结局呢作文500字 令我感动的事作文500字 因为珎的经过,硪懂的了什么叫做“逢场做戏” 真作文_以真为话题的作文900字 关于读书学习的名言 深夜,难以启齿的柔弱 化验室上半年工作总结 2016年成教教学个人工作总结 小学五年级作文450字:留给妈妈的蛋糕 我心中的体育节 中学兴趣小组总结 艰苦奋斗廉洁从政教育心得体会 2011年10月最新入团志愿书 2007年广东卷作文失分警示:传递1000字 政府科室半年工作总结 房地产别墅项目设计师工作总结 机器人的生活作文800字 2013年11月工区工会工作总结 六朝门。傅昭 桑之随笔 专家解读胡总书记十七大报告中的中国外交新理念 早安心语:今日芒种 外国名著读后感600 【阮泊人诗歌】水太清无鱼,人太察无徒论 不良笑花作文1500字 幼儿园大班体育游戏:切西瓜 职场励志:职业生涯规划“8步走”战略_职场励志 纪检组长述职述廉报告 品性源自感恩作文 三株媚品味人生

Copyright © 2016 phpStudy |