设为首页 收藏本站
查看: 366|回复: 0

[经验分享] oracle pl/sql 存储过程编写

[复制链接]

尚未签到

发表于 2016-8-11 06:56:45 | 显示全部楼层 |阅读模式
create or replace package p_kfgl_bbtj is
-- Author  : liucp
-- Created : 2012/7/2 10:01:28
-- Purpose :
--统计查询
procedure usp_bbtj(as_s_action    in varchar2, -- 查询名目: 1=日报,2=周报,3=月报,4=员工服务,5=分点
as_s_cate     in varchar2, --查询类别
as_s_begindate      in varchar2, --开始时间
as_s_enddate      in varchar2, --结束时间     
as_s_year     in varchar2,  --查询年份   
as_s_staff    in varchar2, --查询员工
as_s_zone     in varchar2, --查询地区
as_s_userid     in varchar2, --执行人id
as_s_result      out varchar2, --返回的统计结果            
as_s_errorcode out varchar2,
as_s_errortext out varchar2);
end p_kfgl_bbtj;

  

create or replace package body p_kfgl_bbtj is
--统计查询
procedure usp_bbtj(as_s_action    in varchar2, -- 查询名目: 1=日报,2=周报,3=月报,4=员工服务,5=分点
as_s_cate     in varchar2, --查询类别
as_s_begindate      in varchar2, --开始时间
as_s_enddate      in varchar2, --结束时间     
as_s_year     in varchar2,  --查询年份   
as_s_staff    in varchar2, --查询员工
as_s_zone     in varchar2, --查询地区
as_s_userid     in varchar2, --执行人id
as_s_result      out varchar2, --返回的统计结果            
as_s_errorcode out varchar2,
as_s_errortext out varchar2)
is
v_s_cate     varchar(20);      
v_s_begindate     date;   
v_s_enddate     date;  
v_s_year     date;   
v_s_staff     varchar(20);   
v_s_zone     varchar(20);     
v_s_zd1       varchar(20);
v_s_zd2       varchar(20);
v_s_zd3       varchar(20);
v_s_zd4       varchar(20);
v_s_zd5       varchar(20);
v_s_zd6       varchar(20);
v_s_zd7       varchar(20);
v_s_zd8       varchar(20);
v_s_zd9       varchar(20);
v_s_zd10       varchar(20);
v_s_zd11      varchar(20);
v_s_zd12       varchar(20);
v_s_zd13       varchar(20);
v_s_zd14       varchar(20);
v_s_zd15       varchar(20);
v_s_id           number(15);
v_s_result      varchar2(500);
v_s_sql       varchar2(500); --查询条件拼接
v_s_sql2       varchar2(500);--统计SQL
v_s_sql3       varchar2(500);
v_s_sql4       varchar2(500);
v_s_sql5       varchar2(500);
begin        
as_s_errorcode := '0';
as_s_errortext := to_char(sysdate, 'YYYY-MM-DD');
as_s_result :='1';
-- 数据校验
/**
if(as_s_cate is null) then
as_s_errorcode := '101';
as_s_errortext := '统计类别不能为空';
return;
end if;
if(as_s_begindate is null) then
as_s_errorcode := '102';
as_s_errortext := '查询开始日期不能为空';
return;
end if;
if(as_s_enddate is null) then
as_s_errorcode := '103';
as_s_errortext := '查询结束日期不能为空';
return;
end if;
if(as_s_year is null) then
as_s_errorcode := '104';
as_s_errortext := '查询年份不能为空';
return;
end if;
**/
-- 清理之前数据
delete  from temp_stb   where zd14 = as_s_userid;
--日报统计
if(as_s_action ='1') then
-- 类别为空时默认为按服务方式 :上门 热线 大厅等等来分
if(as_s_cate is  not null) then
v_s_sql := '  and t.service_mode =''' || as_s_cate || '''' ;         
end if;      
if(as_s_zone is not null) then
v_s_sql := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')' ||v_s_sql;
v_s_sql4 := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')' ||v_s_sql;
end if;
if(as_s_cate is not null) then               
for i in  ( select  to_char(min_date + rownum -1,'yyyy-mm-dd')  start_time from (
select to_date(''||as_s_begindate ||'','yyyy-mm-dd') min_date,to_date(''||as_s_enddate ||'','yyyy-mm-dd') max_date from dual        )
connect by rownum<= max_date-min_date+1)   loop
v_s_zd1 := i.start_time;
v_s_sql3 :=  ' and to_char(t.start_time,''yyyy-mm-dd'') ='''||i.start_time||  '''' ||v_s_sql ;
v_s_sql5 :=  ' and to_char(t.start_time,''yyyy-mm-dd'') ='''||i.start_time||  '''' ||v_s_sql4 ;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''数字证书''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''网上申报''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''网上开票''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''应急开票''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''网购发票''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''涉税申请''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''业务政策''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''在线咨询''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd9;
v_s_sql2  := 'select count(1) from service_info  t where   t.service_kind=''其它类''  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd10;
v_s_sql2  := 'select count(1) from service_info  t where  1=1  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd11;  -- 小计
v_s_sql2  := 'select count(1) from service_info  t where  1=1  '  ||  v_s_sql5 ;
Execute Immediate v_s_sql2  into v_s_zd12;  -- 总计。。。
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd9,
zd10,
zd11,
zd12,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd9,
v_s_zd10,
v_s_zd11,
v_s_zd12,
v_s_zd14
);
end loop;
end if;        
end if;

--月报统计
if(as_s_action ='3') then
-- 类别为空时默认为按服务方式 :上门 热线 大厅等等来分
if(as_s_zone is not null) then
v_s_sql := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')';
end if;
if(as_s_year is  null) then
as_s_errorcode := '301';
as_s_errortext := '查询年份不能为空';
return;
end if;
if(as_s_cate is null) then
for i in  (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类(别)型')   loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_mode ='''|| v_s_zd1 ||''' ' || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-01'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-02'' ) '  || v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-03'' ) '  || v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-04'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-05'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-06'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-07'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-08'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd9;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-09'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd10;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-10'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd11;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-11'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd12;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-12'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd13;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd9,
zd10,
zd11,
zd12,
zd13,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd9,
v_s_zd10,
v_s_zd11,
v_s_zd12,
v_s_zd13,
v_s_zd14
);
end loop;
else
for i in  (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类别')   loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_kind ='''|| v_s_zd1 ||''' '  || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-01'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-02'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-03'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-04'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-05'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-06'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-07'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-08'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd9;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-09'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd10;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-10'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd11;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-11'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd12;
v_s_sql2  := 'select count(1) from service_info  t where   (to_char(t.start_time,''yyyy-mm'')='''||  as_s_year ||'-12'' ) '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd13;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd9,
zd10,
zd11,
zd12,
zd13,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd9,
v_s_zd10,
v_s_zd11,
v_s_zd12,
v_s_zd13,
v_s_zd14
);
end loop;
end if;        
end if;
--员工服务方式统计  
if(as_s_action ='4') then
if(as_s_zone is not null) then  
v_s_sql := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')';
end if;
if(as_s_begindate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')>=''' || as_s_begindate || '''' ||v_s_sql ;         
end if;      
if(as_s_enddate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')<=''' || as_s_enddate || ''''  ||v_s_sql;         
end if;   
if(as_s_zone is not null) then  
for i in  (select fullname, userid  from app_user app where  app.depid='1' and app.status='1' and app.zone='' || as_s_zone || '')   loop
v_s_zd1 := i.fullname;
v_s_sql3 := 'and t.userid ='''|| i.userid ||''' '  ||v_s_sql;
v_s_sql2  := 'select count(1) from service_info  t where 1=1'  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''热线'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''大厅'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''上门'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''自助办税机'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''在线咨询'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''大厅辅助服务'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd14
);                          
end loop;
else
for i in  (select fullname, userid  from app_user app where app.depid='1' and app.status='1')   loop
v_s_zd1 := i.fullname;
v_s_sql3 := 'and t.userid ='''|| i.userid ||''' '  ||v_s_sql;
v_s_sql2  := 'select count(1) from service_info  t where 1=1 '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''热线'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''大厅'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''上门'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''自助办税机'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''在线咨询'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''大厅辅助服务'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd14
);                          
end loop;
end if;
end if;
--分点(周)日报统计
if(as_s_action ='5') then
-- 类别为空时默认为按服务方式 :上门 热线 大厅等等来分
if(as_s_begindate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')>=''' || as_s_begindate || '''' ||v_s_sql ;         
end if;      
if(as_s_enddate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')<=''' || as_s_enddate || ''''  ||v_s_sql;         
end if;   
if(as_s_cate is null) then
for i in  (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类(别)型')   loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_mode ='''|| v_s_zd1 ||''' ' || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''昆山'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''张家港'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''常熟'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''太仓'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''园区'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''吴中'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''市局'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_sql2  := 'select count(1) from service_info  t where  1=1  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd9;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd9,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd9,
v_s_zd14
);
end loop;
else
for i in  (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类别')   loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_kind ='''|| v_s_zd1 ||''' '  || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''昆山'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''张家港'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''常熟'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''太仓'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''园区'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd6;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''吴中'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd7;
v_s_sql2  := 'select count(1) from service_info  t where   t.userid in (select userid from app_user app where app.zone=''市局'')  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd8;
v_s_sql2  := 'select count(1) from service_info  t where  1=1  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd9;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd6,
zd7,
zd8,
zd9,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd6,
v_s_zd7,
v_s_zd8,
v_s_zd9,
v_s_zd14
);
end loop;
end if;        
end if;
-- 首页推送 (服务类型服务量统计 上门 热线 大厅。。占比等)
if(as_s_action ='6') then
-- 默认当前时间为查询条件
if(as_s_begindate is null and as_s_enddate is  null ) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'') = to_char(sysdate,''yyyy-MM-dd'')' ;        
else
if(as_s_begindate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')>=''' || as_s_begindate || '''' ||v_s_sql ;         
end if;      
if(as_s_enddate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')<=''' || as_s_enddate || ''''  ||v_s_sql;         
end if;   
end if;
if(as_s_zone is not null) then  
v_s_sql := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')';
end if;
if(as_s_cate is not null) then
for i in  (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类(别)型')   loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_mode ='''|| v_s_zd1 ||''' ' || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t where   1=1  '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t where  1=1  '  ||  v_s_sql ;
Execute Immediate v_s_sql2  into v_s_zd3;
--    v_s_zd3 :=(v_s_zd2/(v_s_zd3+0.0000001));
v_s_sql2  :=  'SELECT ROUND('''||v_s_zd2||''' /('''||v_s_zd3||'''+0.000001), 3) * 100 || ''%'' FROM DUAL';
Execute Immediate v_s_sql2  into v_s_zd3;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd14
);
end loop;
end if;        
end if;
--首页推送 (主要类别服务量统计 网上开票.数字证书 占比等)
if(as_s_action ='7') then
-- 默认当前时间为查询条件
if(as_s_begindate is null and as_s_enddate is  null ) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'') = to_char(sysdate,''yyyy-MM-dd'')' ;        
else
if(as_s_begindate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')>=''' || as_s_begindate || '''' ||v_s_sql ;         
end if;      
if(as_s_enddate is  not null) then
v_s_sql := '  and to_char(t.start_time,''yyyy-MM-dd'')<=''' || as_s_enddate || ''''  ||v_s_sql;         
end if;   
end if;
if(as_s_zone is not null) then  
v_s_sql := ' and  t.userid in (select userid from app_user app where app.zone= ''' || as_s_zone || ''')';
end if;
if(as_s_zone is not null) then  
for i in (select  d.itemvalue as service_type  from dictionary d where d.itemname='服务类别')  loop
v_s_zd1 := i.service_type;
v_s_sql3 := 'and t.service_kind ='''|| v_s_zd1 ||''' ' || v_s_sql ;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''热线''' ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd2;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''大厅'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd3;
v_s_sql2  := 'select count(1) from service_info  t  where t.service_mode =''上门'''  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd4;
v_s_sql2  := 'select count(1) from service_info  t  where 1=1 '  ||  v_s_sql3 ;
Execute Immediate v_s_sql2  into v_s_zd5;
v_s_zd14 :=as_s_userid;
select S_TEMP_STB.NEXTVAL into v_s_id from dual;
insert into temp_stb (id,
zd1,
zd2,
zd3,
zd4,
zd5,
zd14)
values (v_s_id,
v_s_zd1,
v_s_zd2,
v_s_zd3,
v_s_zd4,
v_s_zd5,
v_s_zd14
);                          
end loop;
end if;
end if;  
--异常捕捉
Exception
When others then
as_s_errorcode := sqlcode;
as_s_errortext := sqlerrm;
RollBack;
end;

end p_kfgl_bbtj;

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256011-1-1.html 上篇帖子: Oracle模糊查询(大小写判断) 下篇帖子: oracle 10g修改字符集编码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表