ホームページ >php教程 >PHP开发 >SQL Server カーソル処理ループ

SQL Server カーソル処理ループ

高洛峰
高洛峰オリジナル
2016-12-14 11:49:211131ブラウズ

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');

INSERT INTO test_main (id, value) VALUES (3, 'THREE');

簡単なループ処理

DECLARE

@id INT, @value VARCHAR(10);

BEGIN

-- カーソルを定義します。

DECLARE c_test_main CU RSOR FAST_FORWARD FOR

SELECT id, value FROM test_main;

-- カーソルを開きます。

OPEN c_test_main;

-- データを入力します。

FETCH NEXT FROM c_test_main INTO @id, @value;

- -取得されたデータが処理された場合。

WHILE @@fetch_status = 0

BEGIN

PRINT @value;

--次のデータを入力します。

FETCH NEXT FROM c_test_main INTO @id, @value;

END ;

-- カーソルを閉じます

CLOSE c_test_main;

-- カーソルを放します。

DEALLOCATE c_test_main;

END;

go

ONE

TWO

THREE

Cur最新情報をお知らせします

宣言する

@ id INT, @value VARCHAR(10);

BEGIN

-- カーソルを定義します。

DECLARE c_test_main CURSOR FOR

SELECT id, value FROM test_main

FOR UPDATE;

-- カーソルを開きます.

OPEN c_test_main ;

-- データを入力します。

FETCH NEXT FROM c_test_main INTO @id, @value;

-- データが取得された場合のみ処理されます。

WHILE @@fetch_status = 0

BEGIN

PRINT @value;

UPDATE

test_main

Value = value + '1'

OF c_test_main;

--次のデータを入力します。

FETCH NEXT FROM c_test_main INTO @id, @value;

END;

-- カーソルを閉じる

CLOSE c_test_main;

-CURSORをリリースします。

3 Three1

(影響を受ける 3 行)

カーソルの前後のローリングをサポートします

注: ここでのテストでは、test_main テーブルのデータが 11 に増加します。

DECLARE

@id INT, @value VARCHAR(10);

BEGIN

-- カーソルを定義します。

DECLARE c_test_main CURSOR SCROLL FOR

SELECT id, value FROM test_main;

-- カーソルを開きます。

OPEN c_test_main ;

-- データを入力します。

FETCH FIRST FROM c_test_main INTO @id, @value;

PRINT 'カーソルの最初の行:' + @value;

-- データを入力します。

FETCH LAST FROM c_test_main INTO @id, @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 'カーソル [相対アドレス] の -2 行目:' + @value;

-- データを入力します。
FETCH PRIOR FROM c_test_main INTO @id, @value;

PRINT 'カーソルの前の行:' + @value;

-- データを入力します。

FETCH NEXT FROM c_test_main INTO @id, @value;

PRINT ' カーソルの次の行: ' + @value;


-- カーソルを閉じます
CLOSE c_test_main;
-- カーソルを放します。
DEALLOCATE c_test_main;
END;

DECLARE カーソル名 [ INSENSITIVE ] [ SCROLL ] CURSOR

FOR select_statement

[ FOR { 読み取り専用 | UPDATE [ OF column_name [ ,...n ] ] } ]


Transact-SQL扩展语法

DECLARE カーソル名 CURSOR

[ LOCAL |グローバル ]

[ 転送のみ |スクロール ]

[ 静的 |キーセット |ダイナミック |早送り ]

[ 読み取り専用 |スクロールロック |楽観的 ]

[ TYPE_WARNING ]

FOR select_statement

[ FOR UPDATE [ OF column_name [ ,...n ] ] ]


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。