有時候一般的update、delete、select無法滿足所有情境,這時候迴圈就是一個很好的選項。
範例
-- 1.宣告一些需要變數,定義型態,未來使用
DECLARE @sql nvarchar(4000)
DECLARE @field1 varchar(50)
DECLARE @field2 varchar(50)
DECLARE @i int
DECLARE @numrows int
-- 2.定義需要跑回圈的table,並將資料寫入,id使用自動編號,接下來可以用此key抓出此table的資料
DECLARE @loop_table TABLE (
id int Primary Key IDENTITY(1,1)
,field1 varchar(50)
,field2 varchar(50)
)
insert into @loop_table
select field1,field2 from table1
-- 3.跑for迴圈
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM @loop_table)
IF @numrows > 0
WHILE (@i <= (SELECT MAX(id) FROM @loop_table))
BEGIN
-- 3.1此處取出需要插入的文字
SET @field1 = (SELECT rtrim(field1) FROM @loop_table WHERE id = @i)
SET @field2 = (SELECT rtrim(field2) FROM @loop_table WHERE id = @i)
-- 3.2在此作出需要的指令
set @sql='DELETE from '+@field1+'.dbo.table where id = '''+@field2+''' '
-- 3.3 exec可以直接執行此指定,或測試時先用print看看做出的指令是否正確
exec(@sql)
PRINT @sql
SET @i = @i + 1
END