9.3 遊標

--概念
--是一種處理數據的方法,具有對結果集進行逐行處理的能力。
--實現的功能
--允許對select返回的表中的每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作
--從表中的當前位置檢索一行或多行數據
--允許應用程序提供對當前位置的數據進行修改,刪除的能力
--對其他用戶對結果集做的修改,支持不同的可見性級別
--提供腳本,存儲過程和觸發器中用於訪問結果集中的數據的語句

--遊標的使用
--1.聲明遊標(declare)遊標名稱,類型和屬性
--2.打開遊標(open)執行SQL語句以填充數據
--3.讀取遊標(fetch)從遊標的結果集中檢索想要查看的行,迚行逐行操作。
--4.關閉遊標(close)停止遊標使用的查詢,可以使用OPEN再次打開
--5.刪除遊標(deallocate)刪除遊標並釋放其佔用的所有資源。

--創建遊標cur1,使cur1可以對student表所有的數據進行操作,並將遊標@var_cur1與cur1相關聯
declare cur1 cursor --聲明遊標
for select * from student
declare @var_cur1 cursor 
set @var_cur1=cur1

--創建遊標cur1,使cur1可以對student表所有的數據進行操作,然後打開該遊標,輸出遊標中的行數
use stuinfo
go

OPEN 遊標名稱 
遊標被打開後,@@CURSOR_ROWS用來記弽遊標內的數據行數

declare cur1 cursor --聲明遊標
for select * from student
go
open cur1  --打開遊標
select '遊標cur1數據行數'=@@CURSOR_ROWS

--讀取遊標

FETCH 
[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE {n|@nvar}FROM]{{[GLOBAL 遊標名稱]} @遊標變量名稱}[INTO @遊標變量名稱][,…n]              – @@FETCH_STATUS返回上次執行FETCH命令狀態


open cur1
fetch next from cur1
select 'next_fetch 執行情況'=@@FETCH_STATUS  --讀取遊標

--關閉遊標
close cur1

--刪除遊標
deallocate cur1

--例題(遊標聲明,打開,讀取,關閉,刪除)
--.使用遊標方式顯示課程表(t_course)中的前二條課程信息,並查看每次遊標的執行狀態信息。
--創建課程表(t_course),course_code course_name course_prepair comment,然後插入幾條數據就行了
declare acursor cursor static for select * from t_course --聲明遊標
open acursor  --打開遊標
fetch next from acursor  --讀取遊標
select '執行狀態'=@@FETCH_STATUS
fetch next from acursor  
select '執行狀態'=@@FETCH_STATUS
close acursor  --關閉遊標
deallocate acursor  --刪除遊標
go

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章