由於sql server中沒有提供直接遍歷表的每一行的方法,所以只有通過游標和while迴圈來代替。當讓也可以不適用游標,僅僅使用while迴圈也能遍歷表(當id為int,主鍵時可用這種方式),但兩種方式我沒有做過實際的對比測試,效率誰高誰低我也不好說。
我只給乙個游標使用的簡單示例,想深入了解和使用游標還請查閱msdn的相關文件,點這裡可以直接進入。
提供了乙個category表,包含id, category, parentid, status欄位。
code:
declare @category nvarchar(50)
declare pcurr cursor for
select category from categories
open pcurr
fetch next from pcurr into @category
while(@@fetch_status = 0)
begin
print(@category)
fetch next from pcurr into @category
endclose pcurr
deallocate pcurr
這段**很簡單,遍歷category表,然後列印每個類別的名稱。
要提的只有兩點:
1、使用游標的過程為:定義游標、開啟游標、關閉游標
declare pcurr cursor for …為乙個結果集定義游標
open pcurr
close pcurr
deallocate pcurr表示的是刪除游標引用(這也說明游標就像表的行指標,最開始宣告指標,使用完後也應當銷毀)
2、關於@@fetch_status:0、1、2三個值
0 fetch 語句成功。 -1 fetch 語句失敗或行不在結果集中。 -2 提取的行不存在
SQL Server游標的使用
declare cursor name cursor local global forward only scroll static keyset dynamic fast forward read only scroll locks optimistic type warning for sele...
SQL SERVER 游標的使用
定義游標,讓游標指向sql查詢的結果 declare democursor cursor for select name,id from userinfo 開啟游標。open democursor declare name nvarchar 32 declare id int 把游標指向的資料取出來...
sqlserver 游標的使用
游標 游標可以對乙個select的結果集進行處理,或是不需要全部處理,就會返回乙個對記錄集進行處理之後的結果。1 游標實際上是一種能從多條資料記錄的結果集中每次提取一條記錄的機制。游標可以完成 允許定位到結果集中的特定行 從結果集的當前位置檢索一行或多行資料 支援對結果集中當前位置的進行修改 由於游...