• 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. 前端:Bootstrap框架

    一,bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局, ...

  2. 高通Vuforia

    这里使用高通的Vuroria来做一个AR歌姬. 工具: Vuforia,MMD4Mecanim 模型: 初音未来pmd模型文件,极乐净土vmd动作文件. 逻辑: 当发现识别卡时:开启音乐,模型速度为1 ...

  3. 2018.9.28 典型for循环特殊理解及其二维数组的理解

    如果for里面换成了函数结果会是怎么样呢?下面就来介绍一下 package praDemo; public class Test { public static boolean foo(char c) ...

  4. 【翻译】苹果官网的命名规范之 Naming Properties and Data Types

    苹果官方原文:Naming Properties and Data Types 前言:纯属练习英语和学习.翻译错误和不通顺的地方敬请谅解和指正.O(∩_∩)O 属性和数据类型的命名 本节讲述了属性定义 ...

  5. python-函数的使用

    一.函数的定义 首先,我们来看一个简单的例子来定义函数: def test(): print('hello') 在其中 def  : 关键字,用来告诉解释器,接下来的一段代码是一个函数 test : ...

  6. EJB结合struts2创建项目、发布jboss服务器和访问、父类(BaseDaoImpl)的封装

    一.环境搭建: 1.准备jboss服务器,将对应数据库的xml配置好放到jboss的发布目录下. <?xml version="1.0" encoding="UTF ...

  7. 全局变量&局部变量&Static存储&Register变量

    1.局部变量 局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内:函数的形参就是局部变量: 2.全局变量 全局变量也称为外部变量,它是在函数外部定义的变量.全局变量的说明符为 ...

  8. Java 加密PDF设置密码并添加水印

    /** * Project Name:XXX * File Name:EncryptLogFile.java * Date:2016-6-12上午11:56:38 * Copyright (c) 20 ...

  9. mac install PyQt5

    1. install brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...

  10. 嵌入式:UCOSIII的使用(17.01.24补充)

    0.一些移植.系统相关 OS_CFG_APP.H /* --------------------- MISCELLANEOUS ------------------ */ #define OS_CFG ...