小例子,方便以后查阅.

包头需要声明:   type C_CURSOR is ref cursor;

procedure visitcount(in_date  number,
out_code out number,
out_desc out varchar2
) is
t_date number(8);
t_datepre number(8);
t_sql varchar2(2000);
t_tempcount number(8);
c_data C_CURSOR; v_cityname varchar(20);
v_visittime number(8);
v_visitcount number(8);
v_counttype number(8);
begin
if(in_date<=0) then
t_date:=to_number(trunc(sysdate)-1,'yyyymmdd');
t_datepre:=to_number(trunc(sysdate)-2,'yyyymmdd');
else
t_date:=in_date;
t_datepre:=to_number(to_char(to_date(in_date,'yyyy-mm-dd')-1,'yyyymmdd'));
end if;
--删除之前的数据
--select count(1) into t_tempcount from cn_visitcount
-- where visittime=t_date;
--if t_tempcount>0 then
delete from cn_visitcount
where visittime=t_date;
--end if; t_sql:='
select * from (
select cityname,'||t_date||' visittime,count(1) visitcount,1 counttype from
(
select
(
case
when cityid=68 then ''深圳''
when cityid=56 then ''广州''
end
)cityname,mobile,count(1) from cn_visitanalysis
where to_number(to_char(visittime,''yyyymmdd''))='||t_date||
' and (cityid=68 or cityid=56)
group by cityid,mobile
)
group by cityname';
t_sql:=t_sql||'
union all
select cityname,'||t_date||' visittime,count(1) visitcount,2 counttype from
(
select
(
case
when cityid=68 then ''深圳''
when cityid=56 then ''广州''
end
)cityname,mobile,count(1) from cn_visitanalysis
where to_number(to_char(visittime,''yyyymmdd''))='||t_date||
' and (cityid=68 or cityid=56)
and mobile not in (
select mobile from cn_visitanalysis
where to_number(to_char(visittime,''yyyymmdd''))<='||t_datepre||'
and (cityid=68 or cityid=56)
)
group by cityid,mobile
)
group by cityname)
order by cityname,visitcount desc';
--插入查询的数据
open c_data for t_sql;
loop
fetch c_data into v_cityname,v_visittime,v_visitcount,v_counttype ;
exit when c_data%notfound;
insert into cn_visitcount
(visitcountid, cityname, visitcount, visittime, counttype)
values
(seq_cn_visitcountid.nextval,v_cityname, v_visitcount, v_visittime, v_counttype);
end loop;
--备份每日的手机号
delete from cn_visitmobile where visittime=t_date;
insert into cn_visitmobile
select seq_cn_visitmobileid.nextval,mobile,cityid,visittime from
(
select mobile,cityid,to_number(to_char(visittime,'yyyymmdd')) visittime
from cn_visitanalysis
where to_number(to_char(visittime,'yyyymmdd'))=t_date
and (cityid=68 or cityid=56)
group by cityid,mobile,to_number(to_char(visittime,'yyyymmdd'))
)
commit; exception
when others then
out_desc:='sqlcode:'||sqlcode ||' err_message:' || sqlerrm;
begin
out_code:= -;
--out_description := '系统繁忙,请稍后再试!';
rollback;
--raise;
--错误日志
insert into cn_joblog(joblogid,procname,starttime,endtime,logtype,remark)
values(seq_cn_joblogid.Nextval,'fx114v01_cn_job.visitcount',sysdate,sysdate,'error',out_desc);
commit;
end
;
end visitcount;

Oracle异常处理,动态游标的更多相关文章

  1. orcle中如何使用动态游标来对变量进行赋值

    在oracle中动态游标的概念一般不常用,但有时根据客户的特殊业务,需要使用到动态游标来解决问题!在对于一条动态SQL语句而产生多条记录时,动态游标的使用将是一个很好的选择,具体参见如下在工作流项目中 ...

  2. 【Oracle】PL/SQL 显式游标、隐式游标、动态游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  3. oracle异常处理——ORA-01000:超出打开游标最大数

    oracle异常处理--ORA-01000:超出打开游标最大数https://www.cnblogs.com/zhaosj/p/4309352.htmlhttps://blog.csdn.net/u0 ...

  4. oracle学习笔记(二十二) REF 动态游标

    动态游标 定义语法 --声明 $cursor_name$ sys_refcursor --打开动态游标 open $cursor_name$ is 查询语句; --关闭游标 close $cursor ...

  5. oracle存储过程和游标的使用

    oracle存储过程和游标的使用 (2011-04-19 14:52:47) 转载▼ 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情 ...

  6. 【转】Oracle 执行动态语句

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...

  7. Oracle系列之游标

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 游标: 1.目的 解决“ select * ”返回空.多行记录问题 但凡select,就可能多行结果集,也就需要用游标 2.原理 多行 ...

  8. oracle超过最大游标数异常分析(转贴)

    问题描述 Oracle 使用 OPEN_CURSORS 参数指定一个会话一次最多可以打开的游标的数量.超过此数量时,Oracle 将报告 ORA-01000 错误.当此错误传播到 WebLogic S ...

  9. Oracle PL/SQL 游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  10. Oracle中的游标的原理和使用详解

    游标的简介 逐行处理查询结果,以编程的方式访问数据. 游标的类型: 1,隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql. 2,显式游标:显式游标用于处理 ...

随机推荐

  1. How to load a raster dataset to the raster field in a feature class

    A feature class or table can have a raster attribute field to store any raster related to the featur ...

  2. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q118-Q120)

    Question 118You are creating a Business Connectivity Services (BCS) entity.You need to ensure that a ...

  3. [linux]CentOS无法使用epel源

    [linux]CentOS无法使用epel源 问题的产生与解决 作者作为Android应用开发者,对linux的接触一直是ubuntu为主,但是有一个用于科学上网的vps,由于内存只有64M,所以使用 ...

  4. 多线程之NSOperation和NSOperationQueue

    这篇文章里我将不过多的谈及理论知识,这些东西会的自然会,不会的,看多了也是云里雾里.下面我讲更多的用代码+注释的方式来讲如何使用NSOperation和NSOperationQueue. 1.NSOp ...

  5. WebService学习总结(二)——WebService相关概念介绍

    一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际 ...

  6. INFORMATICA 的调优之 INFORMATICA SERVER TUNING

    INFORMATICA SERVER的调优我认为主要从两个级别来做,一个是MAPPING级别,一个是SESSION级别. 对于MAPPING级别的调优: 一  对MAPPING数据流向的优化: 1 控 ...

  7. RESTful API的设计与开发

    自己做过关于RESTful API的培训,下载

  8. MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程

    虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...

  9. APP原型设计工具,哪家强?转自知乎

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:李志超 链接:http://www.zhihu.com/question/20403141/answer/25329730 ...

  10. python enumerate 函数用法

    enumerate字典上是枚举.列举的意思.   C语言中关键字enum也是enumerate的缩写.   python中enumerate方法,返回一个enumerate类型.参数一般是可以遍历的的 ...