• 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. HDU 1521 指数型母函数

    方法一: DFS 方法二:生成函数 每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数: #include <bits/stdc++.h> using namespace std ...

  2. 【[HAOI2016]找相同字符】

    其实这道题跟[AHOI2013]差异很像 其实这个问题的本质就是让你算所有后缀的\(lcp\)长度之和,但是得来自两个不同的字符串 先把两个字符串拼起来做一遍\(SA\),由于我们多算了来自于同一个串 ...

  3. linux shell——zsh的安装与使用

    Shell是在程序员与服务器间建立一个桥梁,它对外提供一系列命令,让我们得以控制服务器.常用的Bash就是Shell的一种,也是Linux下默认Shell程序.这里介绍一种更强大的.更人性化的Shel ...

  4. Java实体类的属性类型与数据库表字段类型对应表

    原文地址:https://blog.csdn.net/lyhjava/article/details/50562786 Java中的数据类型和SQL中的数据类型有很多不一样,需要仔细区分,不然易在开发 ...

  5. 旧文备份:FFTW介绍

    1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Sci ...

  6. caffe+opencv3.3.1

    跟着时代走 换成opencv3.3.1,目前来看所有的都是最新版了. anaconda最新,opencv最新,我看了protobuf也很新. 下次再买台服务器时,我想直接用python来弄,因为这次安 ...

  7. js中的AJAX

    AJAX:Asynchronous JavaScript and XML.意思就是用JavaScript执行异步网络请求. 如果仔细观察一个Form的提交,你就会发现,一旦用户点击Submit按钮,表 ...

  8. Es6的那些事

    现在看招聘网站上的要求,作为前端er~都要熟悉甚至精通(滑稽脸)es6,项目中也经常用,啥let,const,尤其是用react的同学,肯定对解构赋值不会陌生,今天逛淘宝前端的博客,看到一篇名为Es6 ...

  9. 使用dva框架的总结

    最近的项目是react+dva+atd+webpack的一个后台项目,刚接触dva就感觉很喜欢,很简洁用着很爽. 关于使用redux中的一些问题 1.文件切换问题. redux的项目通常哟啊分为red ...

  10. linux保留旧版本python,安装python3

    1.备份老版本 mv /usr/bin/python /usr/bin/python.bak 2. 下载python3 wget https://www.python.org/ftp/python/3 ...