`

oracle 存储过程 编写

 
阅读更多

1、先建立一个数组[types]:

 

 

create or replace type p_index_list as varray(35) of number;

2、编写存储过程,循环插入数据: 

 

 

--call jdxxEndingProvinceStock(p_index_list(370000,370200,410000,510000),to_char(sysdate-1,'yyyy-MM-dd'));
  create or replace procedure jdxxEndingProvinceStock(p_indexs in p_index_list, stock_date IN VARCHAR2) as
  default_stock_date VARCHAR2(20);
  p_index_num        number;
begin
  default_stock_date := stock_date;
  for x in 1 .. p_indexs.count loop
    p_index_num := p_indexs(x);
    delete JDXX_ENDING_PROVINCE_STOCK
     where stock_date = to_date(default_stock_date, 'yyyy-MM-dd')
       and p_index = p_index_num;
    commit;
  
    insert into JDXX_ENDING_PROVINCE_STOCK
      select p_index_num as p_index,
             t.pd_type_name,
             to_date(default_stock_date, 'yyyy-MM-dd') as stock_date,
             sum(t.count) as stock_count,
             sum(t.count * t.cur_cost_price) / 10000 as stock_money
        from jxc_pd t
       where t.shop_id in (select t.shop_id
                             from entp_shop t
                            where t.p_index in (select t2.P_INDEX
                                                  from BASE_PROVINCE_LIST t2
                                                 where t2.del_mark = 0
                                                 start with t2.P_INDEX = p_index_num
                                                connect by prior t2.P_INDEX = t2.PAR_INDEX))
         and t.own_sys = 1
         and t.is_del = 0
       group by t.pd_type_name;
    commit;
  end loop;

end;

 3、编写定时器,定时执行语句

 

 

grant create job to nmswxt_sw;
-- 建立job
BEGIN
 dbms_scheduler.create_job(job_name => 'SCHDL_BASE_PD_CLAZZ',
                           job_type => 'STORED_PROCEDURE',
                           job_action => 'P_BASE_PD_CLAZZ',
                           start_date => to_date('10-05-2012 01:10:01', 'dd-mm-yyyy hh24:mi:ss'),
                           repeat_interval => 'sysdate+1',
                           comments => '刷新商网产品类别定时任务');
END;

-- 启用job
BEGIN
 dbms_scheduler.enable(NAME => 'SCHDL_BASE_PD_CLAZZ');
END;

-- 运行Job
BEGIN
 dbms_scheduler.run_job(job_name => 'SCHDL_BASE_PD_CLAZZ',use_current_session => FALSE);
END;

-- 停止job
BEGIN
  dbms_scheduler.disable(NAME => 'SCHDL_BASE_PD_CLAZZ');
END;

-- 删除job
BEGIN
  dbms_scheduler.drop_job(JOB_NAME => 'SCHDL_BASE_PD_CLAZZ');
END;

 

 

 

repeat_interval 参数:

     1/24 :一小时

     1/1440 : 一分钟

     1/(3600*24) : 一秒钟

     sysdate+1 : 每天运行一次

     sysdate+1/24 : 每一小时运行一次

     sysdate+1/1440 : 每一分钟运行一次

     sysdate+1/(3600*24) : 每一秒钟运行一次

     sysdate+7 : 每星期运行一次

 

以上时间间隔不能保证任务(job)的下一次运行在一个特定的时间,仅仅能够指定一个任务两次运行之间的时间间隔。

特定日期或时间的例子:

trunc(sysdate+1) : 每天午夜12点

trunc(sysdate+1)+(8*60+30)/(24*60) : 每天早上8:30

trunc(last_date(sysdate)+1) : 每个月第1天的午夜12点

next_day(trunc(sysdate),"tuesday"+12/24) : 每星期二中午12点

http://xurichusheng.iteye.com/blog/1328406

 

1
1
分享到:
评论

相关推荐

    oracle存储过程编写

    以下是对"Oracle存储过程编写"的详细讲解。 一、存储过程的基本概念 1. 存储过程:存储在数据库服务器上的预编译的SQL和PL/SQL代码集合,可以在需要时调用,减少了网络流量,提高了系统性能。 2. PL/SQL:Oracle的...

    Oracle存储过程编写经验和优化措施

    Oracle存储过程编写经验和优化措施 Oracle存储过程编写经验和优化措施 Oracle存储过程编写经验和优化措施

    Oracle存储过程编写及调优

    总之,Oracle存储过程的编写和调优是一个涉及多个层面的过程,包括数据库设计、SQL编程、索引策略以及优化器选择。理解这些知识点并结合实际情况应用,可以显著提升Oracle数据库系统的性能和响应速度。

    Oracle存储过程编写与调试

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写一组SQL语句和PL/SQL块,并将它们作为一个单元来执行。这极大地提高了代码的重用性和数据库操作的效率。下面我们将深入探讨Oracle存储过程...

    Oracle存储过程编写相关维度思考

    Oracle存储过程编写相关维度思考

    oracle 存储过程编写

    教人使用包,程序,类,游标 教人使用包,程序,类,游标 教人使用包,程序,类,游标

    shell脚本编译Oracle存储过程

    linux系统中使用shell脚本对oracle存储过程进行编译

    oracle存储过程-帮助文档

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL语句和PL/SQL块,形成可重复使用的代码单元。这篇博客“oracle存储过程-帮助文档”可能提供了关于如何创建、调用和管理Oracle存储过程...

    使用Java编写Oracle存储过程.pdf

    在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    pb中执行oracle存储过程脚本

    标题中的“pb中执行oracle存储过程脚本”指的是在PowerBuilder(简称PB)环境中调用Oracle数据库的存储过程。PowerBuilder是一种可视化的开发工具,常用于构建数据驱动的应用程序。Oracle存储过程则是在Oracle数据库...

    Oracle存储过程开发的要点

    总之,Oracle存储过程的开发涉及到编写PL/SQL代码,创建、运行、调试和维护这些代码。理解这些基本概念和步骤对于开发高效、可靠的Oracle数据库应用程序至关重要。在实际工作中,开发者还需要考虑诸如安全性、性能...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    存储过程可以由多种语言编写,例如 PL/SQL、Java 等。存储过程可以封装复杂的业务逻辑,提高数据库的安全性和性能。 二、CallabledStatement 介绍 CallabledStatement 是 Java 中的一种接口,用于调用存储过程。...

    oracle 事务 回滚 存储过程

    ### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...

    springboot整合mybatis调用oracle存储过程

    本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用这些存储过程。 Oracle 存储过程 首先,我们编写了两个 Oracle 存储过程:`P_EMP_SELECT` 和 `P_EMP_ADD`。 `P_EMP_SELECT` ...

    润乾报表调用oracle存储过程案例说明

    在实际的业务场景中,有时我们需要调用数据库中的存储过程来获取或处理数据,本篇将详细介绍如何在润乾报表中调用Oracle存储过程。 首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为...

    oracle存储过程编译

    在本例中,我们将讨论如何使用 Oracle 存储过程编译,特别是使用 PL/SQL 语言编写的存储过程。 标题:Oracle 存储过程编译 描述:Oracle 存储过程编译 标签:Oracle 部分内容: 在上面的代码中,我们定义了一个...

    oracle 存储过程 案例

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL和PL/SQL语句,形成一个可重复使用的程序单元。这个“Oracle存储过程案例”提供了丰富的学习材料,帮助用户从入门到精通掌握...

Global site tag (gtag.js) - Google Analytics