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