sql 游標用法一

2021-09-20 04:05:47 字數 2159 閱讀 9030

declare @mergedate datetime 

declare @masterid int 

declare @duplicateid int

select @mergedate = getdate()

declare merge_cursor cursor fast_forward for select mastercustomerid, duplicatecustomerid from duplicatecustomers where ismerged = 0 

--定義乙個游標物件[merge_cursor] 

--該游標中包含的為:[select mastercustomerid, duplicatecustomerid from duplicatecustomers where ismerged = 0 ]查詢的結果.

open merge_cursor 

--開啟游標 

fetch next from merge_cursor into @masterid, @duplicateid 

--取資料到臨時變數 

while @@fetch_status = 0 --系統@@fetch_status = 0 時迴圈結束 

--做迴圈處理 

begin 

exec mergeduplicatecustomers @masterid, @duplicateid

update duplicatecustomers 

set 

ismerged = 1, 

mergedate = @mergedate 

where 

mastercustomerid = @masterid and 

duplicatecustomerid = @duplicateid

fetch next from merge_cursor into @masterid, @duplicateid 

--再次取值 

endclose merge_cursor 

--關閉游標 

deallocate merge_cursor 

--刪除游標

講解游標的技術實現

學習msqsql中的游標 我們需要先建立一張資料表,用以模擬資料:

建立資料表student,裡面包含有4個列

create table student (

id int identity(1,1) primary key,  --自動增長編號

name varchar(20) not null,         --姓名

age int not null,                  --年齡

address  varchar(100) not null,    --位址

)

使用游標有4個過程:宣告游標、開啟游標、提取資料、關閉游標。

declare pcurr cursor for  --宣告乙個名為pcurr游標

declare @customer nvarchar(50)

declare @age int

select name,age from student --這個查詢結果非常重要,這個就是我們需要用游標讀取的資料集

open pcurr  --開啟游標

fetch next from pcurr into @customer,@age

while (@@fetch_status = 0) --判斷游標是否讀取完畢,讀取完畢,這裡將返回100而不是0

begin

print (@customer)

print  (@age)

fetch next from pcurr into @customer,@age --取值,由於我們全面的結果集返回返回的是2行記錄,這裡我們就需要2個自定義引數去取出結果集

close pcurr  --關閉游標

deallocate pcurr --釋放游標

close 與 deallocate 的不同點:

close是關閉游標

,這個時候游標還是存在的,我們可以再次開啟,deallocate是釋放游標,這個時候游標已經不存在,如果我們需要使用游標,就不許重新宣告一次

sql游標用法示例

declare ida smalldatetime declare icd int declare s cursor cursor for select date,cid from dayrecomstat group by date order by date open s cursor fetc...

SQL 游標 Cursor 基本用法

table1結構如下 id int name varchar 50 declare idint declare name varchar 50 declare cursor1 cursor for 定義游標cursor1 select from table1 使用游標的物件 跟據需要填入select...

簡記游標用法

第一步 宣告游標 關鍵字 declare 游標名 關鍵字 cursor 關鍵字 for 記錄集例如 declare cur name cursor for select from tt 第二步開啟游標 open cur name 第四步提取資料 fetch next from cur name in...