Sql Server cursor 的使用处理重复数据 动态拼接 SQL语句
来源:互联网 发布:java冒泡排序法代码 编辑:程序博客网 时间:2024/05/17 23:05
/************************************************************ * Code formatted by setyg * Time: 2014/7/29 10:04:44 ************************************************************/CREATE PROC [dbo].[HandleEmailRepeat] (@TableNameSelect VARCHAR(100), @TableNameIn VARCHAR(100))AS DECLARE @sql NVARCHAR(2000);SET @sql = 'DECLARE EmailHandle CURSOR FOR SELECT REPLACE(email,'' '','''') email ,e.OrderNo ,e.TrackingNo FROM ' + QUOTENAME(@TableNameSelect) + ' AS e ORDER BY e.email 'EXEC (@sql)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 EmailHandle; FETCH NEXT FROM EmailHandle INTO @firstEmail,@FirstOrderNO, @FirstTrackingNO; FETCH NEXT FROM EmailHandle INTO @NextEmail,@NextOrderNO, @NextTrackingNO; IF @NextEmail != @firstEmail BEGIN DECLARE @ssql NVARCHAR(2000); SET @ssql = ' INSERT INTO ' + QUOTENAME(@TableNameIn) + ' (email,OrderNo,TrackingNo,[status]) VALUES (''' + @firstEmail + ''',''' + @FirstOrderNO + ''',''' + @FirstTrackingNO + ''',0 )'; EXEC (@ssql); 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 EmailHandle INTO @NextEmail,@NextOrderNO,@NextTrackingNO WHILE @@fetch_status = 0 BEGIN IF @NextEmail = @@email BEGIN PRINT 'email:' + @@email ; IF PATINDEX('%' + @NextOrderNO + '%', @@orderNO) = 0 SET @@orderNO = @@orderNO + '、' + @NextOrderNO PRINT 'orderNO:' + @@orderNO IF PATINDEX('%' + @NextTrackingNO + '%', @@trackingNO) = 0 SET @@trackingNO = @@trackingNO + '、' + @NextTrackingNO PRINT 'trackingNO:' + @@trackingNO END ELSE BEGIN DECLARE @sssql NVARCHAR(2000); SET @sssql = ' INSERT INTO ' + QUOTENAME(@TableNameIn) + ' (email,OrderNo,TrackingNo,[status]) VALUES (''' + @@email + ''',''' + @@orderNO + ''',''' + @@trackingNO + ''',0 )'; EXEC (@sssql); SET @@email = @NextEmail; SET @@orderNO = @NextOrderNO; SET @@trackingNO = @NextTrackingNO; END FETCH NEXT FROM EmailHandle INTO @NextEmail,@NextOrderNO, @NextTrackingNO; END CLOSE EmailHandle; --关闭游标 DEALLOCATE EmailHandle; --释放游标 IF @@email = @NextEmail BEGIN DECLARE @ssssql NVARCHAR(2000); SET @ssssql = 'INSERT INTO ' + QUOTENAME(@TableNameIn) + '(email,OrderNo,TrackingNo,[status])VALUES (''' + @@email + ''',''' + @@orderNO + ''',''' + @@trackingNO+ ''',0 )'; EXEC (@ssssql); END ENDEND GO
0 0
- Sql Server cursor 的使用处理重复数据 动态拼接 SQL语句
- SQL Server使用触发器删除重复的列(Delete duplicate rows using cursor in SQL Server)
- 不使用动态解析包处理动态拼接的sql
- Sql server中cursor的使用
- Oracle 的case when then语句、cursor游标的使用、动态组织sql语句
- sql 语句的拼接
- sql语句字符串拼接的两种方法 SQL Server
- sql.server一些处理数据语句
- Sql Server:Cursor的例子
- 用动态生成SQL语句的方法处理数据
- sql server使用索引来禁止插入重复的数据
- SQL处理重复数据
- SQL SERVER------SQL 语句处理
- 使用SQL语句对Oracle数据库数据进行拼接
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- 使用Rocker模板引擎解决动态拼接SQL语句的问题
- 多条件查询--使用dapper命令参数动态拼接出最安全的sql语句
- 一个过滤重复数据的sql语句:
- 海思35xx gpio
- ArcGIS教程:分区几何统计
- jsp中的property
- WiFi密码破解
- 在浏览器中播放音频文件的兼容性问题
- Sql Server cursor 的使用处理重复数据 动态拼接 SQL语句
- mysql命令大全
- sfewfesfs linux病毒 网络ping不通
- 使用引用还是使用指针
- jsp中的taglib
- 注意引用的用法
- VC++中的char,wchar_t,TCHAR
- 约瑟夫环问题
- 字符串统计