Cursor(資料指標)
常常我們都會在程式撰寫迴圈,在SQL裡面就是使用Cursor,Cursor會先從資料庫裡面讀出資料,暫存於tempDB資料庫內,再從tempDB逐筆讀出處理,就因為有寫入tempDB的動作,所以使用上也要注意,譬如我看過明明就能用update語法直接處理掉的程式,還使用Cursor逐筆跑出去update,這種影響效能就會非常巨大。
一個簡單的Cursor範例
--定義Cursor並打開
DECLARE MyCursor Cursor FOR --宣告,名稱為MyCursor
-- 此區段就可以撰寫你的資料集,如找出名稱為John的資料
select id from tableA where name like '%John%'
Open MyCursor
print @@CURSOR_rows --查看總筆數
--定義ID變數
declare @id varchar(25) --用來存放ID的變數
--開始迴圈跑Cursor Start
Fetch NEXT FROM MyCursor INTO @id
While (@@FETCH_STATUS <> -1)
BEGIN
--此區塊就可以處理商業邏輯,譬如利用tableA的ID將資料塞入tableB
insert into tableB
select top 1 * from tableA where id=@id
Fetch NEXT FROM MyCursor INTO @id
END
--開始迴圈跑Cursor End
--關閉&釋放cursor
CLOSE MyCursor
DEALLOCATE MyCursor
探索更多來自 宸宸知識庫 的內容
訂閱後即可透過電子郵件收到最新文章。