利用游标在存储过程中做循环数据处理

原创 2006年05月16日 23:17:00

由于以前经常被警告在使用游标的要慎重,所以一直都没有使用过它。这几天在做一个东西,突然就想试试,发现还是有它的优势的,特别是用来做循环处理,大大简化了应用程序。下面记录的是一个程序片段,主要用于描述其使用的一般方法,以供参考。

CREATE PROCEDURE [dbo].[Flow_Sel]
@Employeeno varchar(7),
@mycount int output
AS

declare @delegateno varchar(7)
--获取当前日期(不含时间)
declare @curdate smalldatetime
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
 end
 close employee_cursor--关闭
 DEALLOCATE employee_cursor--释放
 
return
GO

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用游标(Cursors)将多行查询结果逐行处理

 在SYBASE数据库中,说明性数据库语言(SQL)是目前首推的最成功,应用最广泛的数据库语言,它已成为关系型数据库语言的国际标准。这主要得益于它的两大优点:一是免除了用户描述操作过程的麻烦,而将其转...
  • shankaipingo
  • shankaipingo
  • 2006年11月13日 21:25
  • 881

SQL游标 循环处理插入、修改语句

DECLARE @Action nvarchar(50) DECLARE @Remark nvarchar(100) DECLARE myCusor CURSOR FOR SELECT [Action...
  • xiaokui604
  • xiaokui604
  • 2012年04月11日 15:01
  • 1741

【sql】-存储过程实现循环遍历一列数据

前言      项目中要实现前端页面动态配置行为,每个行为调用不同的存储过程的功能,于是乎小编一头扎进了存储过程的海洋中,愈发觉得之前写的存储过程算是基础了。遇到一个问题:查询到表中一列数据,需要取...
  • zt15732625878
  • zt15732625878
  • 2018年01月21日 17:30
  • 177

PLSQL游标的使用_存储过程

DECLARE    type mycur1 is ref cursor;    --定义游标mycur     v_cur_monitor     mycur1;            --定义...
  • xiaoxing1521025
  • xiaoxing1521025
  • 2013年12月13日 17:12
  • 1681

mysql 存储过程中利用游标循环结果集

有这么个需求 topic表中有id 和comments数量 commemt表中有 topicid 和id 由于历史原因,【删除评论表中时未同步删除topic中评论数量的值】,所以要求一条语句执行更新。...
  • u010703523
  • u010703523
  • 2015年01月30日 15:47
  • 1885

sql 关于游标当前循环中取下一次要循环的的ID

循环插入日志,但是需要插入下一条的数据ID到当前的日志里。 本来想用用游标的 fetch next 不就行了么,但是我取值的时候发现如果 while 中如果用两次fetch next  的时候,循环...
  • Xiao_Tian2
  • Xiao_Tian2
  • 2017年08月29日 15:53
  • 131

oracle数据库存储过程范例(使用游标进行循环)

使用游标进行循环。 create or replace PROCEDURE Counting AS a_count number; cursor authorListCursor is select ...
  • enthusiastic513
  • enthusiastic513
  • 2015年07月08日 16:30
  • 544

对于存储过程中表名是变量的游标使用

CREATE OR REPLACE PROCEDURE DAY_LOGIN IS TYPE cur_type IS REF CURSOR; in_date VARCHAR2(40);  --时间...
  • zxh603
  • zxh603
  • 2012年06月21日 17:05
  • 772

sqlserver 存储过程中游标嵌套循环

SQL Server的又表示可以嵌套的,下面是程序中的一个存储过程  ALTER PROCEDURE dbo.TaxiBatchCloseASbegin /* SET NOCOUNT ON */ SE...
  • wcqabc
  • wcqabc
  • 2011年04月17日 13:10
  • 773

Oracle 存储过程中使用cursor 游标遍历数据

 先定义一个cursor: Procedure  P_MYPROC (                                    PI_PARAM VARCHAR2)IS VI_A    ...
  • yjl49
  • yjl49
  • 2009年11月24日 10:15
  • 4083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用游标在存储过程中做循环数据处理
举报原因:
原因补充:

(最多只允许输入30个字)