存储过程使用游标

 Create  PROCEDURE  [dbo].[Pro_ComplaintsCount]
 @StarDate varchar(30),@EndDate varchar(30)
AS
Begin
--Declare @ComplaintType int --大类ID
Declare @Type varchar(50)--大类名称
Declare @Finsh int
Declare @UnFinsh int
Declare @Total int
--Declare @CompCate int
    Declare @Cate varchar(50)
--建立临时表
Declare @tmpdata table 
(
--ComplaintType int,
Type varchar(50),
--CompCate int,
Cate varchar(50),
Finsh int,
UnFinsh int, 
Total int
)
/*建立游标*/ 
DECLARE Cate_cursor CURSOR for --定义游标Cate_cursor
select   Cate from ComCateInfo 
Open Cate_cursor
Fetch Next from Cate_cursor --将游标向下移行,获取的数据放入之前定义的变量@Cate中
into @Cate
/*开始循环*/
WHILE @@FETCH_STATUS = 0  --判断是否成功获取数据
Begin
--投诉类型名称
select @Type = Type from ComCateInfo where Cate=@Cate
--已处理
select @Finsh = Count(*) from V_ComplaintsCount where Cate=@Cate and WorkItemStatus=1 and  CompDate>= @StarDate and CompDate<=@EndDate 
--未处理
select @UnFinsh = Count(*) from V_ComplaintsCount where Cate=@Cate and WorkItemStatus=0  and  CompDate>= @StarDate and CompDate<=@EndDate 
--投诉数据
select @Total = @Finsh + @UnFinsh
insert into @tmpdata
        select @Type,@Cate,@Finsh,@UnFinsh,@Total 
Fetch Next from Cate_cursor --将游标向下移行
into @Cate
End
CLOSE Cate_cursor
DEALLOCATE Cate_cursor
Select * from @tmpdata
End
19:25:21
卢强 2014-05-08 19:25:21

ALTER Procedure [dbo].[P_Score]
@PID varchar(10)
as
Declare @cond varchar(1000),@sql varchar(5000)
select @cond = (select CONTENT from V_Temp_DATA where DATA_ID=@PID)

set @sql ='select * from V_TesMan where ' + @cond
--select @sql
exec(@sql)
posted @ 2014-05-08 19:35  第九剑  阅读(206)  评论(0)    收藏  举报