Sql server中游標的介紹

2022-02-07 08:31:12 字數 1675 閱讀 4741

此文為**文章

相信各位都已經是access老手了吧?如果有人問,更新記錄有多少種方法,你肯定會說:方法多了,不過無非就是用指標一條一條更新和用sql語句一批一起更新而已。

雖然你熟悉了用ado.recordset的 movenext....方法來操作游標進行一條一條記錄的更新,但是 sql server 中也有類似的功能你掌握了嗎?

好了,讓我們來介紹一下 sql server 中如何操作游標吧:

游標的基本用法:

1.宣告游標:以 declare 語法命名乙個游標變數。依照需求,如游標所使用的資料若有別人同時會使用,游標所顯示的資料是否要自動顯示別人的變更,或是游標移動的方式等等來設定游標的型態。接著定義 select 語法以設定游標的資料集合範圍,通常會以 order by 子句設定資料排序的方式。sql server 的游標依照設定,可以提供前後移動以及可更新資料的游標型態。

2.開啟游標:以 open 語法開啟

3.fetch 在游標範圍內的記錄:當 fetch 到某一筆記錄時,游標記錄就停在該筆記錄上。你可以 fetch 上一筆記錄、下一筆記錄、第一筆、最後一筆以及某特定的一筆等等。一般來說,fetch 語法會在使用游標時一再被使用到。在 sql server 內,你可以在每一次 fetch 動作後檢查公共變數 @@fetch_status 的值來確定是否有找到符合的資料。說明如下表

值      

0    fetch 成功

-1    沒有資料,也就是游標移出了資料集合的範圍,不管是移到第一筆之前和是最後一筆之後。

-2    該筆記錄不再存在於游標的資料集合之內。有可能基礎資料表上的記錄在游標開啟之後被其它人修改果,使得該記錄不再符合開啟游標時所定的條件。

4. 修改/刪除游標所在位置的記錄:這個動作是選擇性的,語法如下

update/delete table where current of cursor_name

透過 where current of 的設定,你可以修改/刪除游標所在位置的記錄

5.關閉游標:使用 close 語法來關閉游標。關閉游標會結束游標的活動,但游標還是存在,所以你可以重新開啟它而不必重新宣告。

6.釋放掉游標:因為內部維護游標機制的資料結構會消耗掉記憶體,所以當你使用完游標時應該用 deallocate 語法釋放掉游標。 

**如下:

declare @auname varchar(50) --宣告接受游標傳回的值的變數

--宣告游標變數

declare curauname cursor for select au_fname + ' ' + au_lname from authors order by au_id

open curauname --開啟游標

fetch next from curauname into @auname --以一筆筆的方式訪問集合內的記錄,將找到的資料放入變數 @auname之內

while(@@fetch_status=0) --直到找不到資料才停止找尋下一筆的動作

begin

select @auname

fetch next from curauname into @auname

end

close curauname --關閉游標

deallocate curauname --釋放游標

sql server 中游標的使用

create table borrowbook 建立表學生借書 borrowbook int identity 1,1 stutid int stufeeid int borrowdate datetime,returndate datetime,fee money create table stu...

SQL Server中游標的使用

舉個栗子 臨時變數 declare iduniqueidentifier 宣告游標名 declare cursor name cursor forselect id from com datadictionaryinfo 開啟游標 open cursor name 先查詢一次再迴圈,防止有多個游標時...

SQL Server 中游標的使用

sql server 中游標的使用 1.游標是行讀取,占用資源比sql多 2.游標的使用情景 現存的系統中使用的是游標,查詢必須通過游標來實現 用盡了while 子查詢臨時表 表變數 自定義函式以及其他方式仍然無法實現的時候,使用游標 3.t sql 中游標的生命週期由5部分組成 定義游標 游標的定...