關於sql server游標的使用

2021-07-23 07:41:36 字數 1253 閱讀 5388

做統計時某些情況下使用游標更為方便,例如我要統計每個檢測機構的車牌識別率,但是有些檢測機構沒有營業所以不需要統計,通過游標遍歷select出來的機構狀態表,再通過臨時表儲存所需要的車牌識別率,最後通過這個臨時表取識別率。

alter procedure [dbo].[apro_abcd]

--各種接受引數

@returnvalue varchar(50)='n' output --輸出引數

asbegin

set xact_abort on;//設定事務回滾的

//當為on時,如果你儲存中的某個地方出了問題,整個事務中的語句都會回滾

//為off時,只回滾錯誤的地方

begin transaction t --宣告事務

--各種臨時引數

declare @id1 varchar(10), --用於游標,所有狀態正常機構id

@id2 varchar(10) --用於游標,沒有車牌警報機構id為1

delete from temptable--臨時表

declare dep_cursor cursor for

--宣告游標(例如:select a.id,isnull(b.id,1) from table1 a left join table2 b on(a.id=b.id))

if (@action='searchall')

begin

open dep_cursor;--開啟游標

fetch next from dep_cursor into @id1,@id2 --獲取第一條資訊

while(@@fetch_status = 0) --迴圈 0 成功  -1 失敗  -2 丟失

begin

--處理

end

close dep_cursor;--關閉游標

deallocate dep_cursor;--刪除游標

endif @@error <> 0

begin

rollback transaction t --回滾事務

delete from percen;

set @returnvalue = 'n';

endelse

begin

commit transaction t --提交事務

set @returnvalue = 'y';

endend

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 server中沒有提供直接遍歷表的每一行的方法,所以只有通過游標和while迴圈來代替。當讓也可以不適用游標,僅僅使用while迴圈也能遍歷表 當id為int,主鍵時可用這種方式 但兩種方式我沒有做過實際的對比測試,效率誰高誰低我也不好說。我只給乙個游標使用的簡單示例,想深入了解和使用游...

SQL SERVER 游標的使用

定義游標,讓游標指向sql查詢的結果 declare democursor cursor for select name,id from userinfo 開啟游標。open democursor declare name nvarchar 32 declare id int 把游標指向的資料取出來...