有時候一般的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