sqlserver临时表或表变量代替游标
发布时间:2020-12-12 14:57:18 所属栏目:MsSql教程 来源:网络整理
导读:为什么要用游标呢?数据量超过1万,游标就很慢了。 在很多场合,用临时表或表变量也可以替代游标 临时表用在表没有标识列(int)的情况下. 在表有标识列(int)的情况下可以用表变量,当然也可以用临时表. 利用临时表或表变量的原因时,生成一个连续的列 对于临时表
为什么要用游标呢?数据量超过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 ? ? ? ? ? DROP TABLE... --------- 存储过程的循环和临时表 |