• 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. PythonTip(2)

    结尾0的个数 描述: 给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数.(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大). 例如: L=[2,8,3,50], 则输出:2 n = ...

  2. delete在js里为引用删除

    delete 运算符从对象中删除一个属性,或从数组中删除一个元素. delete expressionexpression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素. 说明 ...

  3. GreenPlum 与hadoop什么关系?(转)

    没关系. gp 可以处理大量数据, hadoop 可以处理海量. gp 只能处理湖量,或者河量. 无法处理海量. 作者:SallyLeo链接:https://www.zhihu.com/questio ...

  4. DEM、DTM和DSM的区别

    一.DTM(Digital Terrain Model) 数字地面模型是利用一个任意坐标系中大量选择的已知x.y.z的坐标点对连续地面的一个简单的统计表示,或者说,DTM就是地形表面形态属性信息的数字 ...

  5. 【luogu P2319 [HNOI2006]超级英雄】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2319 #include <cstdio> #include <cstring> #i ...

  6. Android学习笔记_81_Android ProgressDialog ProgressBar 各种效果

    1,弹出Dialog 屏幕不变暗. 创建一个样式就OK了:在styles.xml文件里添加样式: 1, <style name="dialog" parent="@ ...

  7. 【题解】洛谷P3399 丝绸之路

    我丑,话说在前头 题目: https://www.luogu.org/problemnew/show/P3399 一道挺简单的DP 思路不难想 但是蒟蒻总是写错初始化啥的 思路 定义f[i][j]为第 ...

  8. centos7 安装 mysql5.7, 以及安装中遇到的问题

    # wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# rpm -ivh mysql57-communi ...

  9. 小白袍 -- Chapter 1.4.1.1 URL编码的理论解读

    1.4.1.1  URL编码的理论解读 我们在做JavaWeb时避不过GET请求,GET请求和POST请求最大一点不同就在于参数,GET请求的参数会URL中,而POST请求的参数则会在HTTP Hea ...

  10. JS数组去重的十种方法(转载)

    重点:博客原文出自http://www.cnblogs.com/yuanbo88/p/7345331.html.我只是想给自己做个笔记.感谢敲代码的怪蜀黍做的贡献. Methods 1: 思路:定义一 ...