动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   数据库 → 阅读文章
  

 存储过程---实践

作者来源: 
阅读 1212 人次 , 2006-4-14 10:12:00 


   

1,fgw_proc1:


CREATE PROCEDURE fgw_proc1(@begin int , @end int)
AS

  SET NOCOUNT ON
  DECLARE @userid int, @handled float, @total float

  CREATE TABLE #temp_proc1
  (
  userid int,
  handled float,
  total float
  )
  --get @total
  DECLARE cur_cr CURSOR FOR SELECT count(*) FROM AHD.AHD.call_req where open_date>@begin and open_date<@end
  OPEN cur_cr
  FETCH cur_cr INTO @total
  CLOSE cur_cr
  DEALLOCATE cur_cr
 
  DECLARE cur_ctct CURSOR FOR SELECT id FROM AHD.AHD.ctct
  OPEN cur_ctct
  FETCH cur_ctct INTO @userid
  WHILE @@FETCH_STATUS = 0
  BEGIN
 --get @handle through exec fgw_proc2
 EXEC fgw_proc2 @userid , @begin , @end , @handled output
  INSERT INTO #temp_proc1 VALUES (@userid , @handled , @total)
 FETCH NEXT FROM cur_ctct INTO @userid
  END
  CLOSE cur_ctct
  DEALLOCATE cur_ctct
  SELECT * FROM #temp_proc1
  DROP TABLE #temp_proc1


drop procedure fgw_proc1
exec fgw_proc1 1,1


2,fgw_proc2

CREATE PROCEDURE fgw_proc2(@userid int , @begin int , @end int , @handled float OUTPUT)
AS

  SET NOCOUNT ON
  SET @handled = 0
  DECLARE @cr_id int, @zh_id int, @status char(20), @to_status char(20), @cnt int, @open_date int
  DECLARE cur_crzh CURSOR FOR SELECT * FROM AHD.dbo.FGW_CR_ZH where cnt = @userid
  OPEN cur_crzh
  FETCH cur_crzh INTO @cr_id, @zh_id, @status, @to_status, @cnt, @open_date
  WHILE @@FETCH_STATUS = 0
  BEGIN
 DECLARE @count2 int
  DECLARE cur_crzh2 CURSOR FOR SELECT count(*) FROM AHD.dbo.FGW_CR_ZH where cr_id = @cr_id and open_date>@begin and open_date<@end
 OPEN cur_crzh2
 FETCH cur_crzh2 INTO @count2
 CLOSE cur_crzh2
 DEALLOCATE cur_crzh2
 IF @count2 != 0
SET @handled = @handled + 1 / @count2
 FETCH NEXT FROM cur_crzh INTO @cr_id, @zh_id, @status, @to_status, @cnt, @open_date
  END
  CLOSE cur_crzh
  DEALLOCATE cur_crzh
  --SELECT @handled

 

drop procedure fgw_proc2
exec fgw_proc2 1,1,1

3,fgw_proc3


CREATE PROCEDURE fgw_proc3(@begin int , @end int)
AS

  SET NOCOUNT ON
  DECLARE @cr_id int, @zh_id int, @cnt int, @sym char(30), @time_stamp int, @isOK int

  CREATE TABLE #temp_proc3
  (
  cr_id int,
  zh_id int,
  cnt int,
  isOK int
  )
 
  DECLARE cur_crzhsd CURSOR FOR SELECT cr.id,zh.id,zh.to_cnt,sd.sym,zh.time_stamp FROM AHD.AHD.call_req as cr LEFT OUTER JOIN AHD.AHD.ztr_his as zh ON cr.persid=zh.call_req_id LEFT OUTER JOIN AHD.AHD.srv_desc as sd ON cr.support_lev=sd.code WHERE cr.type='I' and cr.open_date>@begin and cr.open_date<@end and zh.to_status='OP'
  OPEN cur_crzhsd
  FETCH cur_crzhsd INTO @cr_id, @zh_id, @cnt, @sym, @time_stamp
  WHILE @@FETCH_STATUS = 0
  BEGIN
 --get @handle through exec fgw_proc2
 EXEC fgw_proc4 @zh_id , @sym , @time_stamp , @cnt output , @isOK output
  INSERT INTO #temp_proc3 VALUES (@cr_id , @zh_id , @cnt , @isOK)
 FETCH NEXT FROM cur_crzhsd INTO @cr_id, @zh_id, @cnt, @sym, @time_stamp
  END
  CLOSE cur_crzhsd
  DEALLOCATE cur_crzhsd
  SELECT * FROM #temp_proc3
  DROP TABLE #temp_proc3


drop procedure fgw_proc3
EXEC fgw_proc3 1, 1111111111

4,fgw_proc4

CREATE PROCEDURE fgw_proc4(@zh_id int , @level char(30) , @time_stamp int , @cnt int OUTPUT , @isOK int OUTPUT)
AS

  SET NOCOUNT ON
  SET @isOK = 0
  DECLARE cur_zh CURSOR FOR SELECT to_cnt,time_stamp FROM AHD.AHD.ztr_his WHERE id = @zh_id and to_status in ('L1WIP','L2WIP') and time_stamp>@time_stamp
  OPEN cur_zh
  DECLARE @time_stamp1 int
 SET @time_stamp1=0
  FETCH cur_zh INTO @cnt, @time_stamp1
 IF @time_stamp1!=0
 BEGIN
IF CHARINDEX('一级', @level) IS NOT NULL AND CHARINDEX('一级', @level)!=0
 BEGIN
if @time_stamp1 - @time_stamp <600
SET @isOK=1
 END
ELSE IF CHARINDEX('二级', @level) IS NOT NULL AND CHARINDEX('二级', @level)!=0
 BEGIN
if @time_stamp1 - @time_stamp <1800
SET @isOK=1
 END
ELSE IF CHARINDEX('三级', @level) IS NOT NULL AND CHARINDEX('三级', @level)!=0
 BEGIN
if @time_stamp1 - @time_stamp <1800
SET @isOK=1
 END
ELSE IF CHARINDEX('四级', @level) IS NOT NULL AND CHARINDEX('四级', @level)!=0
 BEGIN
if @time_stamp1 - @time_stamp <1800
SET @isOK=1
 END
 END

  CLOSE cur_zh
  DEALLOCATE cur_zh
  --SELECT @isOK, @time_stamp1

 

drop procedure fgw_proc4
exec fgw_proc4 1,'1',1,1,1

 本文Tags存储过程  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:windows 2003中SQL Server 2000分布式事务错误解决方法
· 下一篇:利用存储过程
· sql note
· oracle捕捉变化数据
· Oracle 9i的备份和恢复机制
· 一个Mysql自动备份脚本
· Access数据库技术(47)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077