zoukankan      html  css  js  c++  java
  • Oracle 存储过程--游标循环调用函数/存储过程

    存储过程的基本语法如下:

    create or replace procedure procedure_name

    as

    begin

       extention;

    end;

    在sqlplus中调用存储过程的方式:

    begin

    procedure_name;

    end;

    我的业务需求是:查询自2015年1月1号以来的,每天的总订单量(截止到当天的所有订单),我需要接收一个时间,使订单时间小于等于该时间,然后对订单数计数,大概就是这样;

    这是一个需要运行的存储过程:

    CREATE OR REPLACE
    procedure "RECYCLE_EVERY_DAY"
    IS
    begin
    declare
    --定义一个游标变量 ,将参数集合存进游标中
    cursor every_day_list is
    SELECT
    TO_DATE( '2015-01-01', 'yyyy-MM-dd' ) + ROWNUM - 1 AS daylist
    FROM
    DUAL CONNECT BY ROWNUM <= trunc(
    SYSDATE - to_date( '2015-01-01', 'yyyy-MM-dd' )) + 1 ;
    --这个SQL是求出2015年1月1号至今为止的每一天的一个时间结果集

    begin
    --循环游标,取出游标中的每一个值,然后将值传入到你需要的地方,比如另外一个存储过程
    for item in every_day_list LOOP
    -- DBMS_OUTPUT.PUT_LINE(item.daylist); --打印出游标中的每一项
    ADD_DATE_TEST(item.daylist);--ADD_DATE_TEST(item.daylist)是我的另外一个存储过程
    end loop;
    end;
    end RECYCLE_EVERY_DAY;

    下面是我的需要参数的存储过程:

    CREATE OR REPLACE
    PROCEDURE "ADD_DATE_TEST"(VS_DATE IN DATE) IS
    BEGIN
    DECLARE cursor
    ORDER_TYPE_LIST is --声明游标,将查询结果集存入游标
    SELECT DISTINCT
    to_char( VS_DATE, 'yyyy' ) AS year,
    CUSTOMER_TYPE,
    COUNT(*) AS ORDER_NUMS,
    SUM(COUNT(*)) over() AS ALL_ORDERS
    FROM
    T_ORDER_LIST
    WHERE
    TO_CHAR(join_time,'yyyy-MM-dd') <= TO_CHAR(VS_DATE,'yyyy-MM-dd')
    GROUP BY to_char( VS_DATE, 'yyyy' ), CUSTOMER_TYPE ;

    begin

    FOR Itme in ORDER_TYPE_LIST LOOP --循环取出插入到相应的表
    insert into ZT_FWDX_TB_NUMTONGBI_XRD (ID,YEAR,CUSTOMER_TYPE,ORDER_NUMS,SUM_NUM,CREATE_TIME,IS_HISTORY,DATE_MONTH,DATE_DAY)
    values (SEQ_ZT_FWDX_NUMTONGBI_XRD.Nextval,Itme.year,Itme.KEHU_TYPE,Itme.ORDER_NUMS,Itme.ALL_ORDERS,VS_DATE,0,TO_CHAR(VS_DATE,'MM'),TO_CHAR(VS_DATE,'dd'));
    end loop;
    /*dbms_output.put_line(VS_DATE);*/--可以先试着打印出传入的参数,看是否是需要的参数
    end;
    COMMIT;--提交事务
    END ADD_DATE_TEST;

    里面的表和字段,可以换成自己需要的,忽略我自己的表信息;

    希望对你有帮助,有问题留言讨论!

  • 相关阅读:
    设计模式学习08:享元模式
    设计模式学习07:适配器模式
    设计模式学习06:策略模式和简单工厂模式
    XCode Debugger中的Icon符号的意义
    蒲公英——APP内测分发平台
    分享申请IDP账号的过程,包含duns申请的分享
    Dash——程序员的的好帮手:API文档浏览器+代码片段管理工具
    xScope——界面设计师的终极工具箱
    Alcatraz——Xcode插件管理工具
    苹果向开发者发布 Xcode 6.3.2 GM版 修复 Bug
  • 原文地址:https://www.cnblogs.com/hjLu/p/13097775.html
Copyright © 2011-2022 走看看