MSSQL里,替代cursor的一种方法。
来源:互联网 发布:怎么看我的淘宝等级 编辑:程序博客网 时间:2024/06/05 17:37
在MSSQL里,我们可以使用Cursor来实现数量循环处理。但是Cursor有一个问题,就是效率慢。当然,如果机器性能很好的服务器就例外。我在这里介绍一个简单的方法,可以替代Cursor。在简单的,处理数据不是很多的情况下,应该可行的。我自己的程序里,间中会使用到。
以下用一个例子来解释:
declare @i int -- 要循环的行数declare @id intdeclare @firstname varchar(20)declare @lastname varchar(20)declare @ids table (id int primary key) --拿来保存已经处理了的idselect @i=count(id) from users where firstname>'Michael'while @i>0begin --- 拿出一行来处理 select top 1 @id=u.id, @firstname=firstname, @lastname=lastname from users u where firstname='Michael' and not exists(select id from @ids where id=u.id) --- 把已经拿出的id保存起来 insert into @ids (id) values(@id) -- 处理 print @firstname+' '+@lastname -- 下一条记录。 set @i=@i-1end
例子里,我先拿出要循环的次数,目的是防止死循环。有些时候,编写逻辑一混乱,就会造成死循环。所以我没有使用一种循环到没有记录为止的循环。
0 0
- MSSQL里,替代cursor的一种方法。
- Cursor里的方法实现
- 一种SO_BINDTODEVICE选项的替代方法
- 静态map成员的一种替代方法
- MSSQL对函数的调用方法不止一种哦
- 一种过滤字段里电话号码的方法
- OpenCV2.2里CImage(CvvImage)取消以后的替代方法。(
- mssql里事务的详解
- SQL Server中用While循环替代游标(Cursor)的解决方案
- Android的Noticification里的setLatestEventInfo()方法的替代方法
- 对于有多种可替代解决方案的业务逻辑,提供一种快速替换方法
- ProtoBuf 替代XML的又一种选择
- 关于“Base 一种Acid的替代方案”
- 转:Base: 一种Acid的替代方案
- Base: 一种Acid的替代方案
- 替代goto的方法
- Externalizable 的替代方法
- 替代setLatestEventInfo()的方法
- Eclipse皮肤
- 删除Windows 7系统保留分区100MB
- 从谷歌搜索更多
- Struts2之struts2自带插件实现异步调用
- 二叉树的前序建立,前中后序遍历的非递归算法
- MSSQL里,替代cursor的一种方法。
- 如何解决php 生成验证码图片不显示问题
- aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file
- What skills are needed for machine learning jobs?
- JavaScript实现如期输入控件
- poj1797 dijkstra
- fork函数详解
- -[UIView presentScene:]: unrecognized selector sent to instance
- iptables详解