为什么要用游标呢?数据量超过1万,游标就很慢了。
在很多场合,用临时表或表变量也可以替代游标
临时表用在表没有标识列(int)的情况下.
在表有标识列(int)的情况下可以用表变量,当然也可以用临时表.利用临时表或表变量的原因时,生成一个连续的列
对于临时表是使用
SELECT .... ,IDENTITY(int) NewID INTO #tmp SELECT ... FROM YourTable
对于YourTable含有标识列(比如字段名为ID)时,可以
INSERT @tmpTable
SELECT ..., NewID=(SELECT COUNT(*) FROM YourTable b WHERE b.id<=a.id) FROM YourTable a
当然,也可以不写入表变量而使用子查询.
当有了从 1--你的记录数连续的NewID时, 你就可以用循环来操作每一条记录了.
这个NewID你就可以当它是指针标识.
DECLARE @i INT,@cnt INT
SET @i=1
SELECT @cnt=COUNT(*) FROM YourTable
WHILE @i<@cnt