ホームページ  >  記事  >  php教程  >  SQL でのカーソルの使用

SQL でのカーソルの使用

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

通常、SELECT クエリ ステートメントを使用する場合、それらはすべて 1 行のレコードに対して行われます。
クエリ アナライザーで複数行のレコード (つまり、レコードセット) を読み取りたい場合は、カーソル Or WHILE およびその他のループを使用する必要があります。


カーソルの種類:
1. 静的カーソル (データ行の変更を検出しません)
2. 動的カーソル (すべてのデータ行の変更を反映します)
3. 前方専用カーソル (スクロールをサポートしません)
4.キーセット カーソル (変更は反映できますが、挿入と削除を正確に反映することはできません)

カーソルの使用順序:
1. カーソルを定義します
2. カーソルを開きます
3. カーソルを使用します
4. カーソルを閉じる
5.カーソルを解放します

Transact-SQL:

カーソル名カーソル [LOCAL | GLOBAL][FORWARD_ONLY][STATIC KEYSET | READ_ONLY]
for update[, 列name]]
注: LOCAL ローカル カーソル GLOBAL グローバル カーソル
FORWARD_ONLY 前方スクロールのみ
STATIC 静的 KEYSET キーセット DYNAMIC 動的
READ_ONLY 読み取り専用 SCROLL_LOCKS カーソルの現在の行をロック

カーソルのデータを取得

FETCH PRI [ [NEXT | FIRST |
ABSOLUTE { n | @nvar | ]
カーソル名 [変数へ]
次の行 FIRST 最初の行
line ABSOLUTE n Line n
RELATIVE n 現在位置
からn番目の行を変数に代入 現在行の各フィールドの値を変数

に代入 カーソル状態変数:

@@fetch_status カーソル状態

行数
N Number of rows - 1 カーソルは動的です 0 空のセットカーソル
カーソルの現在の行:
カーソル名の現在

例 1: カーソルを使用してクエリされたデータセットを走査します

pubs を使用します

go

declare @auid char (12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)

auth_cur カーソルを宣言

select au_id、au_lname、au_fname、state

から著者

open auth_cur

fetch next from auth_cur into @auid,@aulname,@aufname, @st

while (@@fetch_status=0)

begin

print '著者番号: ' +@auid

print '作成者名: '+@aulname+','+@aufname

print '状態: '+@st

print '------------- --------- --'

fetch next from auth_cur into @auid,@aulname,@aufname, @st

end

close auth_cur

deallocate auth_cur

例 2: カーソルを使用して変更、データを削除

auth_cur カーソル スクロールを宣言for

au_lname の更新のために作成者から au_id、au_lname、au_fname、state

を選択します

open auth_cur

declare @rowcount int

set @rowcount = 6

auth_cur から絶対 @rowcount を取得 -- 識別された行を設定します変数 @rowcount を現在の行として使用します

-- 次の行はカーソルを使用して変更されます

update authors set au_lname='Zhang' where current of auth_cur -- カーソル内の現在の行を変更します

-- 以下この行は、カーソルを使用して削除操作を実行することです

auth_cur の現在の作者から削除します

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