T-SQL 循環表的一種方式


原文來自: https://www.lesg.cn/netdaima/sqlservert-sql/2016-463.html

SsqlServer 中循環表有幾種方式

1.臨時表

2.游標

3….

下面就來說說怎么用臨時表格來循環數據

create table t(
 
id int not null primary key identity(1,1),
 
dt datetime not null default(getdate()),
 
name varchar(100) not null default('')
 
)
--測試案例,給表插入數據
declare @count int ;set @count=0;
while(@count<100)
begin
set @count= @count+1
insert into t (name) values (NEWID())
end
select * from t
--判斷臨時表是否存在 如果存在則刪除臨時表
if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..#t_m'))
begin
 drop table #t_m --刪除臨時表
end
--將數據插入臨時表
select * into #t_m from t 
--開始循環表數據
 
 declare @tmid int ; -- 創建一個臨時變量
While (exists ( select 1 from #t_m))
BEGIN
select top 1 @tmid =id from #t_m --拿出一條數據復制在臨時變量里面, 用於待會刪除該數據使用
--
 /*
 好了 在這里使用 @tmid 來操作 該條數據吧
 lesg.cn
 */
--
DELETE #t_m WHERE ID=@tmid; --刪除一條臨時表的數據
END
if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..#t_m'))
begin
 drop table #t_m --操作結束后刪除臨時表
end

思路如下;
1.創建臨時表格
2.while 循環臨時表; 循環條件是 臨時表是否存在
3. 獲取一條臨時表的數據; 記得使用top 1 否則數據一多起來性能低到你發瘋 獲得臨時變量,臨時變量等於該條數據的ID

 
select   top 1 @tmid =id from #t_m

4.使用臨時變量來操作數據
5.整個循環結束后刪除臨時表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM