SQL 临时表或表变量替代游标

1.如果表没有自动增长的标识列(int) 使用临时表

SELECT IDENTITY(int) NewID ,.. INTO #tmp FROM YouTable

2.表有标识列 使用表变量

INSERT INTO @tmpTable

SELECT ..., NewID=(SELECT COUNT(*) FROM YouTable b WHERE b.aid<=a.aid) FROM YouTable a

当有了从 1到~d 的连续NewID时, 你就可以用循环来操作每一条记录了.
这个NewID你就可以当它是指针标识.

DECLARE @i INT,@cnt INT

SET @i=1

SELECT @cnt=COUNT(*) FROM YourTable

WHILE @i<@cnt

     BEGIN

           SELECT .... FROM #tmp(或@tmpTable依上面情况不同) WHERE NewID=@i

           ...

           SET @i=@i+1

     END



DROP TABLE...

 

你可能感兴趣的:(sql)