sql 中 遍历数据集 处理方法一(非游标)
2012-05-11 15:27
197 查看
一个数据集 ,假设是 一个表结构,可以自定义创建表变量,在这里用 临时表temp1.
先判断临时表数据集中有没有数据,再借用 Set RowCount 1 功能 查询出一行 ,然后进行需要的逻辑处理,例中主要是查表中序列号,当该序列号的状态为0时,
将会报出错误.反之无问题,逻辑判断完成;最后执行Set RowCount 0 以便返回所有的行(也就是将此功能设置为 off ),然后从该数据集中删出该条查询记录;
接着又进行while判断继续相同逻辑处理.(当然数据集中要保证 FSn为主键或唯一标识值,否则最后一步删除可能会删除有同样FSn的记录,以致功能缺陷. 在此想到:在执行deleted之后再执行Set RowCount 0 是否可以解决此问题,因为还未执行Set RowCount 0前还受执行sql只影响一行的作用,执行delete可以确保此操作对象是查询的数据记录; 这个语法在不久之后的版本将不再支持,所以尽量不采用Set RowCount功能,类似功能有top .在此不细讲.)
PS:此次主要是说说有些情况下可以不用游标来处理这种遍历问题,由于sql只是刚了解,在实际项目中很大可能碰到这种情况,以往一直用到游标,在数据量较大时,会影响处理效率;记录着这种处理方法,可以帮助自己以后碰到类似问题快速处理,毕竟好记忆不如烂笔头.o(∩_∩)o
-- declare @FSn as nvarchar(50), @FStatus as int, @FSErrorstr as nvarchar(100) while exists(select FSn from #temp1) begin Set RowCount 1 select @FSn = fsn from #temp1 select @FStatus=FStatus from t1 where FSn=@FSn if @FStatus=0 begin set @FSErrorstr= ' number :'+ @FSN +' is not a qualified,please check!' RAISERROR(@FSErrorstr,18,18) end SET ROWCOUNT 0 delete from #temp1 where FSn= @FSn end IF OBJECT_ID('Tempdb..#temp1') is not null BEGIN drop table #temp1 END
先判断临时表数据集中有没有数据,再借用 Set RowCount 1 功能 查询出一行 ,然后进行需要的逻辑处理,例中主要是查表中序列号,当该序列号的状态为0时,
将会报出错误.反之无问题,逻辑判断完成;最后执行Set RowCount 0 以便返回所有的行(也就是将此功能设置为 off ),然后从该数据集中删出该条查询记录;
接着又进行while判断继续相同逻辑处理.(当然数据集中要保证 FSn为主键或唯一标识值,否则最后一步删除可能会删除有同样FSn的记录,以致功能缺陷. 在此想到:在执行deleted之后再执行Set RowCount 0 是否可以解决此问题,因为还未执行Set RowCount 0前还受执行sql只影响一行的作用,执行delete可以确保此操作对象是查询的数据记录; 这个语法在不久之后的版本将不再支持,所以尽量不采用Set RowCount功能,类似功能有top .在此不细讲.)
PS:此次主要是说说有些情况下可以不用游标来处理这种遍历问题,由于sql只是刚了解,在实际项目中很大可能碰到这种情况,以往一直用到游标,在数据量较大时,会影响处理效率;记录着这种处理方法,可以帮助自己以后碰到类似问题快速处理,毕竟好记忆不如烂笔头.o(∩_∩)o
相关文章推荐
- T-SQL中替代游标遍历结果级的方法 - 来自http://support.microsoft.com/kb/111401
- 用SQL游标遍历循环数据的方法
- SQL查询遍历数据方法二 [ 游标 + While循环]
- 用SQL游标遍历循环数据的方法
- 用SQL游标遍历循环数据的方法
- 用SQL游标遍历循环数据的方法
- 用SQL游标遍历循环数据的方法
- SQL查询遍历数据方法二 [ 游标 + While循环]
- 用SQL游标遍历循环数据的方法
- [SQL模板] 避免使用游标 cursor 的最佳方法
- SQL游标原理和使用方法
- SQL游标原理和使用方法
- MySQL循环遍历执行查询SQL语句结果的方法
- oracle中字段名与sql关键词重复的处理方法
- JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法
- sql server 2008 之找不到SQL Server Management Studio的处理方法
- SQL游标原理和使用方法
- 利用oracle动态游标实现动态SQL循环遍历
- JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法
- SQL游标原理和使用方法