• CREATE OR REPLACE PROCEDURE PRC_WAP_ACTIVEUSERS(RETCODE OUT VARCHAR2)
  • /***********************************************************
  • * 功能:WAP指标--活跃用户统计(分批提交)
  • * 参数:RETCODE(返回编码:0000成功)
  • * 作者:
  • * 创建时间:2013-01-16
  • * 版本:1.0
  • * 修改人:
  • * 修改时间:
  • **********************************************************/
  • IS
  • RET_CODE VARCHAR2(6);                 --错误信息代码
  • RET_MSG  VARCHAR2(200);               --错误信息
  • V_LAST_MONTH      VARCHAR2(8);        --上个月份
  • V_FIRST_DAY_MONTH VARCHAR2(10);       --上个月第一天
  • V_END_DAY_MONTH   VARCHAR2(10);       --上个月第二天
  • V_COUNT           NUMBER;             --计数变量
  • V_COMMITNUM CONSTANT NUMBER :=1000000;--一次提交记录数(默认一百万)
  • BEGIN
  • --程序开始
  • DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS BEGIN : ' ||
  • TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  • RET_CODE := '0000';                   --返回编码初始化
  • V_COUNT  := 0;                        --计数器初始化
  • --申明游标
  • DECLARE
  • TYPE CUR_DATA_TYPE IS RECORD        --定义动态游标数据类型
  • (
  • PHONE_NUM   VARCHAR2(20),         --电话号码
  • LOGIN_TIMES VARCHAR2(2000));      --访问次数
  • VRECORD CUR_DATA_TYPE;              --定义数据类型
  • BEGIN
  • SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMM')
  • INTO V_LAST_MONTH
  • FROM DUAL;
  • SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYYMMDD')
  • INTO V_FIRST_DAY_MONTH
  • FROM DUAL;
  • SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMMDD')
  • INTO V_END_DAY_MONTH
  • FROM DUAL;
  • FOR VRECORD IN (SELECT TEL AS PHONE_NUM, COUNT(T.TEL) AS LOGIN_TIMES
  • FROM TEMP_BOSS_BIP1A021 T
  • WHERE T.DAY_ID BETWEEN V_FIRST_DAY_MONTH AND
  • V_END_DAY_MONTH HAVING COUNT(T.TEL) >= 2
  • GROUP BY T.TEL) LOOP
  • INSERT INTO T_BIP1A021
  • (PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH)
  • VALUES
  • (VRECORD.PHONE_NUM, VRECORD.LOGIN_TIMES, V_LAST_MONTH);
  • IF ((MOD(V_COUNT, V_COMMITNUM)) = 0) THEN
  • COMMIT;                         --求余:一百万提交一次
  • END IF;
  • V_COUNT := V_COUNT + 1;
  • END LOOP;
  • COMMIT;
  • DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS END: ' ||
  • TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  • EXCEPTION
  • WHEN OTHERS THEN
  • BEGIN
  • ROLLBACK;
  • RET_CODE := '0001';
  • RET_MSG  := '存储过程 PRC_WAP_ACTIVEUSERS 执行错误!' || CHR(10) ||
  • '错误代码:' || SQLCODE || CHR(10) || '错误信息:' ||
  • SUBSTR(SQLERRM, 1, 128);
  • GOTO TOEND;
  • END;
  • END;
  • --返回程序运作结果
  • <<TOEND>>
  • RETCODE := RET_CODE;
  • IF (RET_CODE = '0000') THEN
  • RET_MSG := '运行成功!';
  • COMMIT;
  • ELSE
  • RET_MSG := '运行失败!' || RET_MSG;
  • ROLLBACK;
  • END IF;
  • DBMS_OUTPUT.PUT_LINE(RET_MSG);
  • DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
  • TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  • END PRC_WAP_ACTIVEUSERS;

oracle 游标例子的更多相关文章

  1. 游标-Oracle游标汇总

    游标(Cursor):用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作.    游标可分为:    <!--[if !supportLists] ...

  2. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  3. Oracle游标介绍

    Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...

  4. [转载]oracle游标概念讲解

    原文URL:http://www.2cto.com/database/201203/122387.html ORACLE游标概念讲解 什么是游标?  ①从表中检索出结果集,从中每次指向一条记录进行交互 ...

  5. Oracle 游标使用总结(好文章)

    游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用CURSOR与SELECT一起对表或者视图中的数据进行查询并逐行读取. Oracle游标分为显示游标和隐式游标. 显示游 ...

  6. ORACLE游标概念讲解

    1,什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互的机制. ②关系数据库中的操作是在完整的行集合上执行的.   由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所 ...

  7. Oracle 游标示例,带异常处理

    Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...

  8. Oracle游标带参数

    Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...

  9. Oracle 游标使用(转)

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...

随机推荐

  1. GPU使用

    GPU .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1p ...

  2. LA 4015 树形背包

    题目链接:https://vjudge.net/contest/164840#problem/D 题意: 给一棵树,每条边上有一些权值,求 长度不超过 x ,最多能走多少个点: 分析: 考虑每一个节点 ...

  3. Catalan数列

    引入 今天听学长讲了卡特兰数列后对其有了更深的认识,在此完善了一下之前的博客加以总结. 首先用一个经典的例子来描述一下Catalan数列,我们有一个1~n的数列和一个大小为n的栈,我们有如下两种操作: ...

  4. 检查WIFI是否连接

    查看网络连接 查看WiFi连接状态 (连接- -断开)

  5. PowerShell批量创建文件夹

    效果如下: 实现关键: mkdir (1..10|%{"hwllo$_"}) 过程概述:

  6. VK Cup 2012 Round 1 D. Distance in Tree (树形dp)

    题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...

  7. 【JeeSite】登录和主题切换

    最高管理员账号,用户名:thinkgem 密码:admin 1.    密码加密:登录用户密码进行SHA1散列加密,此加密方法是不可逆的.保证密文泄露后的安全问题. 在spring-shiro配置文件 ...

  8. 最短路问题:迪杰斯特拉算法(Dijsktra)

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...

  9. React中setState同步更新策略

    setState 同步更新 我们在上文中提及,为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序控制流的方式设置某些事件,我们也不能依赖于this.state来计算 ...

  10. libcurl 基本使用

    libcurl,在HLS流媒体播放终端上提供HTTP下载的相关接口.具体的使用方式可以参见http://curl.haxx.se/libcurl/c/libcurl-tutorial.html,或博客 ...