--宣告三個變數,@colA及@colB分別為table中的欄位,@MyCursor為指標
DECLARE
@colA nvarchar(10)
DECLARE @colB nvarchar(10)
DECLARE @MyCursor CURSOR
--指定啟用了效能最佳化的
FORWARD_ONLY、READ_ONLY 資料指標
SET @MyCursor = CURSOR FAST_FORWARD
--假設TableA中有100筆,則下列的語法就會直接傳回100筆
FOR
Select
colA,colB
From tableA
--開啟指標
OPEN
@MyCursor
--取得第一筆的值放到@colA及@colB
FETCH NEXT FROM @MyCursor
INTO @ColA,@ColB
--
@@FETCH_STATUS=回針對連接目前開啟的任何資料指標而發出的最後一個資料指標 FETCH 陳述式的狀態
--傳回值
-- 0
FETCH 陳述式成功。
-- -1 FETCH 陳述式失敗,或資料列已超出結果集。
-- -2
遺漏提取的資料列。
--開始繞迴圈
WHILE
@@FETCH_STATUS = 0
BEGIN
--顯示@colA及@colB的值在畫面上
PRINT @ColA
PRINT @ColB
--你也可以在這之中處理其他sql部份,例如你可以寫依據@colA及@colB這兩個key在tabl2查詢後的資料寫到table3
--這是其中一種應用
insert
into table3
select *
from table2
where table2.c1=@colA and
table2.c2=@colB
--取得下一筆記錄的colA及colB
FETCH NEXT FROM @MyCursor
INTO @ColA,@ColB
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
沒有留言:
張貼留言