• 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. [学习笔记] numpy次成分分析和PCA降维

    存个代码,以后参考. numpy次成分分析和PCA降维 SVD分解做次成分分析 原图: 次成分复原图: 代码: import numpy as np from numpy import linalg ...

  2. luogu P4168 [Violet]蒲公英

    嘟嘟嘟 分块经典题竟然是一道黑题…… 分块求区间众数的大体思想是对于询问区间[L, R],预处理出这中间的整块的众数,然后统计两边零散的数在[L, R]中出现的次数,最后取出现次数最多且最小的数. 因 ...

  3. Linux 进程状态标识 Process State Definition

    From : http://www.linfo.org/process_state.html 译者:李秋豪 进程状态标识是指在进程描述符中状态位的值. 进程,也可被称为任务,是指一个程序运行的实例. ...

  4. js 原生获取Class元素

    function getElementsByClassName(n) { var classElements = [] allElements = document.getElementsByTagN ...

  5. java基础知识一览(二)

    一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...

  6. sql server 自增长显式添加值

    如果想在自增列添加数据,会提示我们不能插入显式值 解决:

  7. JVM垃圾回收补充知识点

    1. 分代 虚拟机中的共划分为三个代: 年轻代(Young Gen):eden和survivor-8:1:1 年老代(Old Gen):存储大对象,由survivor晋升 永久代(perm Gen): ...

  8. foreach, for in, for of 之间的异同

    forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. 示例代码: var arr = [4, 9, 16, 25]; ...

  9. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

  10. mybatis <fireach> 拼接sql语句 org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'in'. Cause:

    <select id="getUserIn" parameterType="QueryVo" resultMap="userMap"& ...