【SQL】Cursor指標用法

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

探索更多來自 宸宸知識庫 的內容

訂閱後即可透過電子郵件收到最新文章。

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *