对于sql 来说操作集合类型(一行一行)是比较麻烦的一件事,而一般业务逻辑复杂的系统或项目都会涉及到集合遍历的问题,通常一些人就想到用游标,这里我列出了两种方案,供大家参考
1.游标方式
1 DECLARE @Data NVARCHAR(max)
2 SET @Data='1,tanw,2,keenboy' --Id,Name
3
4 DECLARE @dataItem NVARCHAR(100)
5 DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';'))
6 OPEN data_cursor
7 FETCH NEXT FROM data_cursor INTO @dataItem
8 WHILE @@FETCH_STATUS=0
9 BEGIN
10 DECLARE @Id INT
11 DECLARE @Name NVARCHAR(50)
12
13 DECLARE dataItem_cursor CURSOR FOR (SELECT * FROM split(@dataItem,','))
14 OPEN dataItem_cursor
15 FETCH NEXT FROM dataItem_cursor INTO @Id
16 FETCH NEXT FROM dataItem_cursor INTO @Name
17 CLOSE dataItem_cursor
18 DEALLOCATE dataItem_cursor
19
20 /*
21 在这里做逻辑处理,插入或更新操作 ...
22 */
23 END
24
25 CLOSE data_cursor
26 DEALLOCATE data_cursor
2.While方式
1 DECLARE @Data NVARCHAR(max)
2 SET @Data='tanw,keenboy' --Id,Name
3
4 DECLARE @Temp TABLE
5 (
6 Id INT IDENTITY(1,1),
7 Name NVARCHAR(50)
8 )
9 DECLARE @Id INT
10 DECLARE @Name NVARCHAR(50)
11 DECLARE @Results NVARCHAR(MAX) SET @Results=''
12 INSERT INTO @Temp SELECT (SELECT * FROM split(@Data,';'))
13
14 WHILE EXISTS(SELECT * FROM @Temp)
15 BEGIN
16 SELECT TOP 1 @Id=Id,@Name=Name from @Temp
17 DELETE FROM @Temp where [id] = @Id
18 SET @Results=@Results+@Name+','
19
20 /*
21
22 在这里做逻辑处理,插入或更新操作 ...
23
24 */
25 END
26 SELECT @Results
如果是简单单表批量插入操作的,上面方法大可不必要
分享到:
相关推荐
代码如下:.游标方式 1 DECLARE @Data NVARCHAR(max) SET @Data=’1,tanw;2,keenboy’ –Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,’;...
若只是需要大批量插入数据使用bcp是最好的,若同时需要插入、删除、更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 代码如下: /// <summary> /// 大批量插入数据(2000每...
1.游标方式 代码如下: DECLARE @Data NVARCHAR(max) SET @Data=’1,tanw,2,keenboy’ –Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,’;...
每个实例都是经过笔者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 本书两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;本书实例来源...
2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...
实例004 根据需要创建所需解决方案 6 1.2 Visual Studio开发环境的使用 8 实例005 为程序设置版本和帮助信息 8 实例006 设置Windows应用程序启动窗体 9 实例007 统一窗体中控件的字体设置 10 实例008 通过“格式”...
支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...