--宣告三個變數,@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 
 
沒有留言:
張貼留言