SQL Foreach 逐筆執行 以及 取得目前新增(INSERT INTO)進SQL的流水號
-- 宣告變數
DECLARE @para1 VARCHAR(50)
DECLARE @para2 uniqueidentifier
DECLARE @para3 VARCHAR(100)
-- 宣告指標變數
DECLARE _cursor CURSOR FOR
SELECT s1,s2,s3 FROM Table_A where 1 = 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)
--取目前 id 可以抓到該筆目前新增這筆的流水號(辨識值? 可能要去查查看)
SET @id = SCOPE_IDENTITY();
-- 指標變數往下移動, 並將取出的欄位值, 設定給我們自訂的變數
-- 類似foreach的取下一筆
FETCH NEXT FROM _cursor INTO @para1,@para2,@para3
END
-- 關閉指標變數
CLOSE _cursor
-- 釋放指標變數
DEALLOCATE _cursor
參考:
https://toyo0103.github.io/2014/03/13/%E3%80%90SQL%E3%80%91SQL%E7%9A%84foreach%EF%BC%8C%E9%80%90%E7%AD%86%E5%9F%B7%E8%A1%8C/
留言
張貼留言