0%

【SQL】SQL的foreach,逐筆執行

需求:將Table_A的資料塞到Table_B,並把Table_B產生的ID編號回寫回Table_A的對應欄位 ```sql
– 宣告變數
DECLARE @para1 VARCHAR(50)
DECLARE @para2 uniqueidentifier
DECLARE @para3 VARCHAR(100)

– 宣告指標變數
DECLARE _cursor CURSOR FOR
SELECT s1,s2,s3 FROM Table_A where eiplstatus = 1

– 啟用指標變數
OPEN _cursor
– 以指標變數為基準點, 將取出的欄位值,依序塞給我們自訂的變數,亦即將每筆s1 => @para1、 s2 => @para2 、s3 => @para3
FETCH NEXT FROM _cursor INTO @para1,@para2,@para3

WHILE @@FETCH_STATUS = 0
BEGIN
insert into Table_B(c1,c2,c3) values(@para1,@para2,@para3)
SET @id = SCOPE_IDENTITY();

update Table_A set id = @id where CURRENT of _cursor

-- 指標變數往下移動, 並將取出的欄位值, 設定給我們自訂的變數
FETCH NEXT FROM _cursor INTO @para1,@para2,@para3

END

– 關閉指標變數
CLOSE _cursor
– 釋放指標變數
DEALLOCATE _cursor