測試3個資料
CREATE TABLE test_main ( id INT, value VARCHAR(10), PRIMARY KEY(id) );
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO'); (id, value) VALUES (3, 'THREE');
簡單循環處理
DECLARE
@id INT
DECLARE c_test_main CURSOR FAST_FORWARD FOR SELECT id, value FROM test_main; -- 開啟遊標. ROM c_test_main INTO @id, @value; --假如檢索到了數據,才處理. WHILE @@fetch_status = 0 BEGIN FROM c_test_main INTO @id, @value; END; -- 關閉遊標 CLOSE c_test_main; --釋放遊標. DEALLOCATE REE 用於更新的遊標 DECLARE @ id INT, @value VARCHAR(10); BEGIN --定義遊標. DECLRSFOR UPDATE;
--開啟遊標.
OPEN c_test_main ;
--填入資料.
FETCH NEXT FROM c_test_main INTO @id, @value;
--
PRINT @value;
--更新資料.
UPDATE
test_main
WHERE CURRENT OF c_test_main; --遠@id, @value; END; --關閉遊標 CLOSE c_test_main;go
ONE
(1行受影響)
TWO
Three
SELECT * FROM test_main;
go
id ONE1
2 TWO1
3 Three1
(3 行受影響的數據,增加至11條。
DECLARE
@id INT, @value VARCHAR(10);BEGIN
-- 定義遊標.DECLARE c_test_main CURSOR SCROLL 遠標.
OPEN c_test_main; -- 填入資料.FETCH FIRST FROM c_test_main INTO @id, @value;
PRINT '遊標中的第一行:' + @value; -- ;PRINT '遊標中的最後一行:' + @value;
-- 填入資料.
FETCH ABSOLUTE 3 FROM c_test_main INTO @id, @value;PRINT '遊標位址中的第3行[絕對標位址] + @value;
-- 填入資料.
FETCH RELATIVE -2 FROM c_test_main INTO @id, @value;PRINT '遊標中的第一個填色 --資料.
FETCH PRIOR FROM c_test_main INTO @id, @value;PRINT '遊標中的上一行:' + @value;
-- 填入資料.
fmain TCH遊標中的下一行:' + @value; -- 關閉遊標CLOSE c_test_main;
-- 釋放遊標.DEALLOCATE 92語法
DECLARE 遊標名稱[ INSENSITIVE ] [ SCROLL ] CURSOR
FOR select_statement
[ FOR { READ ONLY | UPDATE [ OF column_name [ ,...nactARE 或
語法語法
遊標名稱CURSOR
[ LOCAL |全球]
[ FORWARD_ONLY |]
[ 靜態|鍵盤|動態|快轉]
[ 只讀|H
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]