利用游標在儲存過程中做迴圈資料處理

2021-04-07 05:14:28 字數 1289 閱讀 9738

由於以前經常被警告在使用游標的要慎重,所以一直都沒有使用過它。這幾天在做乙個東西,突然就想試試,發現還是有它的優勢的,特別是用來做迴圈處理,大大簡化了應用程式。下面記錄的是乙個程式片段,主要用於描述其使用的一般方法,以供參考。

create procedure [dbo].[flow_sel]

@employeeno varchar(7),

@mycount int output

asdeclare @delegateno varchar(7)

--獲取當前日期(不含時間)

declare @curdate **alldatetime

declare @cd datetime

set @cd = getdate()

set @curdate=cast(datepart(year,@cd) as varchar) + '-' + cast(datepart(month,@cd) as varchar)

+ '-' + cast(datepart(day,@cd) as varchar)

--此使用者的待審批工作數量

set @mycount=(select count(fid) from flow

where employeeno=@employeeno and status=1)

--定義乙個游標,用於遍歷使用者所有的委託人

declare employee_cursor  cursor for

select employeeno 

from delegate

where @curdate>=startdate and @curdate<=enddate and active=1 and delegateno=@employeeno

open employee_cursor

fetch next from employee_cursor into @delegateno

while @@fetch_status = 0

begin

set @mycount=@mycount+(select count(fid)  from flow

where employeeno=@delegateno and status=1)--計算委託人的所有待審批工作數量並累加到@mycount變數中

fetch next from employee_cursor into @delegateno

endclose employee_cursor--關閉

deallocate employee_cursor--釋放

return

go

儲存過程中使用游標

create proc cursortest id int 0,name varchar 50 as 建立游標 declare cursor cursor 設定游標欲操作的資料集 set cursor cursor for select id,name from users 開啟游標 open cu...

mysql 儲存過程 利用游標迴圈新增例項

create definer www 192 168 procedure newsng.pro test in params varchar 255 begin declare string varchar 50 declare string1 varchar 50 declare splitcha...

在SQL的儲存過程中應用游標計算

建立乙個儲存過程,並返回乙個已經開啟的游標 create procedure return cursor userid varchar 40 cur kpi guid cursor varying output as begin set cur kpi guid cursor local scrol...