`
futeng
  • 浏览: 264165 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

PL/SQL编写定时Job Oracle定时删除

阅读更多

1. 要做什么

如何使用Oracle存储过程结合定时Job来达到定时删除指定数据库表数据的目的。

2. 大致过程

  • 新建两张测试表格
  • 编写insert存储过程和delete存储过程
  • 测试存储过程
  • 编写insert定时Job和delete定时Job
  • 测试定时Job

3. 参考文章

4. 准备工作

  • 使用PL/SQL Developer作为连接和开发工具。
  • 使用SYS账户以dba身份登录。
  • 使用CRXJ_COLLECT作为当前用户模式。
  • 两张表名:crxj_collect.TEST_TABLE; crxj_collect.TEST_TABLE_2;
  • 每10秒执行Job的Interval写法:sysdate+ 10/(24*60*60)
  • 每60秒执行Job的Interval写法:sysdate+ 60/(24*60*60)

5. 建测试表

-- 创建 crxj_collect.test_table 表


create table crxj_collect.test_table
(
       seq number(8) primary key,
       seqtime date
);

-- 创建 crxj_collect.test_table_2 表


create table crxj_collect.test_table_2
(
       seq number(8) primary key,
       seqtime date
);
 

6. 创建存储过程

-- 创建insert存储过程
create or replace procedure crxj_collect.test_insert_proc is
begin
       insert into crxj_collect.test_table(seq, seqtime)
       values(NVL((SELECT MAX(seq) FROM crxj_collect.test_table) +1, 0),sysdate);
       insert into crxj_collect.test_table_2(seq, seqtime)
       values(NVL((SELECT MAX(seq) FROM crxj_collect.test_table) +2, 0),sysdate);
       commit;
exception
       when others then
            dbms_output.put_line('Exception happened,data was rollback!');
       rollback;
end test_insert_proc;

-- 创建delete存储过程
create or replace procedure crxj_collect.test_delete_proc is
begin
	delete from crxj_collect.TEST_TABLE;
	delete from crxj_collect.TEST_TABLE_2;
	commit;
exception
	when others then
		dbms_output.put_line('Exception happened, data will rollback!');
	rollback;


end test_delete_proc;
 

使用Command Window来执行存储过程:

SQL> 
SQL> create or replace procedure crxj_collect.test_delete_proc is
  2  	begin
  3  		delete from crxj_collect.TEST_TABLE;
  4  		delete from crxj_collect.TEST_TABLE_2;
  5  		commit;
  6  	exception
  7  		when others then
  8  			dbms_output.put_line('Exception happened, data will rollback!');
  9  		rollback;
 10  	end test_delete_proc;
 11  /
Procedure created


SQL> 
 

7. 测试存储过程

右击待测试的存储过程(注意下图是以另外一个存储过程作为例子,但是操作步骤一样)

Start debugger -> Run

可以在DBMS Output栏目查看是否有错误消息。

可以查看是否正常执行存储过程(删除数据)。

8. 编写定时Job

-- 创建定时insert Job
var job_num number;
begin
	dbms_job.submit(:job_num,'crxj_collect.test_insert_proc;',sysdate,'sysdate + 10/(24*60*60)');
end;	

-- 创建定时delete Job
var job_num number;
begin
	dbms_job.submit(:job_num,'crxj_collect.test_delete_proc;',sysdate,'sysdate + 60/(24*60*60)');
end;
 

9. 检测Job是否创建成功

select * from user_jobs;
 

可以到对应测试表查看数据

经过观察,insert执行和delete执行皆正常。

完成。

 

*10. 修改JOB

如果你需要修改的话,请这样:

begin
  dbms_job.change
  (24,'crxj_collect.test_delete_proc;',sysdate,'SYSDATE + 1/24');
end;
 

 

first created by ifuteng#gmail.com 2014/4/15

1
1
分享到:
评论

相关推荐

    PL/SQL examples

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库中的一个扩展,结合了SQL的查询能力与过程化编程语言的特点,为数据库管理和开发提供了强大的工具。本资源“PL/SQL examples”提供了一...

    oracle实验三PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...

    Oracle PL/SQL常用47个工具包

    Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言的功能结合起来,为数据库管理和开发提供了丰富的工具。在Oracle环境中,PL/SQL是构建高效、可靠应用程序的关键组件。以下是对"Oracle PL/SQL常用47个工具...

    英文版Oracle PL/SQL Packages and Types Reference

    《Oracle PL/SQL Packages and Types Reference》是一本针对Oracle数据库编程的重要参考资料,主要涵盖了PL/SQL包和类型的详细信息。这本书对于那些具有英文阅读能力的开发者来说,是开发过程中的重要工具,能够帮助...

    Oracle Database PL/SQL Packages and Types Reference 11g Release

    PL/SQL是Oracle数据库支持的一种过程化编程语言,用于编写存储过程、函数、触发器等数据库对象。在11g Release 2中,PL/SQL进一步增强了其功能和性能,提供了更丰富的内置包和类型,以支持更高效、更灵活的数据库...

    Oracle PL SQL专家指南_高级PLSQL解决方案的设计与开发

    Oracle PL/SQL是Oracle数据库系统中的过程化语言,它结合了SQL的数据库操作能力和传统的编程语言特性,使得开发者能够创建复杂的数据处理逻辑和业务规则。《Oracle PL SQL专家指南:高级PLSQL解决方案的设计与开发》...

    绝对好的 oracle pl/sql 编程

    ### 绝对好的 Oracle PL/SQL 编程 #### 一、PL/SQL 程序设计简介 ##### 1.1 SQL 与 PL/SQL **1.1.1 什么是 PL/SQL?** PL/SQL(Procedure Language for SQL)是一种专门为 Oracle 数据库设计的过程化语言。它结合...

    PL/SQL oracle工具

    8. **作业调度**:可以创建和管理DBMS_JOB或DBMS_SCHEDULER作业,定时执行PL/SQL脚本或任务。 9. **安全性**:工具提供了对用户权限和安全性的管理,可以分配角色、权限,确保数据库的安全运行。 10. **性能优化**...

    高级PL\SQL(介绍pl/sql)

    PL/SQL可以直接调用Oracle提供的各种API,如DBMS_OUTPUT用于调试,DBMS_STATS用于统计分析,或者DBMS_JOB用于计划任务等,极大地丰富了功能。 总之,PL/SQL是Oracle数据库中不可或缺的一部分,它的强大功能使得...

    oracle pl/sql 开发api

    在Oracle中,PL/SQL API通常表现为一组预定义的包,例如DBMS_OUTPUT用于调试,DBMS_ALERT用于异步通知,DBMS_LOCK用于锁定机制,DBMS_JOB用于计划任务等。这些包提供了丰富的功能,允许开发者执行各种数据库操作,而...

    PL/SQL笔记pl/sql笔记

    PL/SQL是Oracle数据库的一种编程语言,它结合了SQL(结构化查询语言)与过程编程语言的功能,使得数据库管理和应用程序开发更加便捷。本篇笔记主要涵盖了PL/SQL的基础语法和常用操作,包括检索数据、操纵数据以及SQL...

    PL/SQL开发,性能优化等文档

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与Procedural Language的控制结构,用于在Oracle数据库环境中创建复杂的应用程序。本压缩包包含的文档专注于PL/SQL的开发技巧和性能优化策略,对于...

    pl/sql个人笔记.

    PL/SQL(程序化SQL)是Oracle数据库的标准编程语言,它扩展了SQL的功能,允许在数据库环境中编写过程化的业务逻辑。在PL/SQL中,可以嵌入多种类型的SQL语句来实现复杂的数据处理任务。根据标题和描述中的内容,我们...

    Oracle PL/SQL 编程手册(SQL大全)

    ### Oracle PL/SQL 编程手册(SQL大全)关键知识点解析 #### 一、SQL PLUS基础命令及用法 ##### 1. 引言与SQL命令概述 - **SQL命令关键字**:在Oracle环境下,共有17个关键字可以作为SQL语句的开头。包括: - `...

    Oracle数据库实验--PL/SQL程序基础1

    本次实验主要聚焦于Oracle数据库中的PL/SQL编程技术,包括存储过程、存储函数等高级特性。通过编写这些存储过程和函数来处理具体的业务逻辑,比如查询特定员工的信息、更新员工薪资等。实验共涉及三个主要任务:第4...

    pl/sql笔记

    PL/SQL(Procedural Language for SQL)是Oracle数据库系统中的一种过程化编程语言,它结合了SQL的数据处理能力与传统过程化语言的控制结构,使得在数据库内部进行复杂逻辑处理成为可能。以下是PL/SQL能够实现的主要...

    oracle/SQL和PL/SQL课堂笔记

    PL/SQL部分未在提供的内容中出现,但它是Oracle的扩展,允许编写存储过程、函数、触发器等,增强了SQL的功能。它结合了SQL查询与过程式编程语言,使数据库管理更加灵活和高效。 这些笔记提供了学习SQL和Oracle...

    oracle pl/sql programming

    根据提供的文件信息,本文将对Oracle PL/SQL编程的相关知识点进行详细介绍。主要内容涵盖随附光盘中的内容介绍、从PL/SQL调用存储过程的方法及其限制条件,以及Oracle内置包的具体功能。 ### 随附光盘内容 #### 1....

    PL/SQL学习资料(.doc)

    PL/SQL(Procedural Language for SQL)是Oracle为支持其数据库产品而设计的一种专有的过程化语言。它将SQL命令与过程化语句结合在一起,能够直接在数据库中编写复杂的数据库应用程序。 **1.2 PL/SQL的好处** - **...

    Oracle 8i Supplied PL/SQL Packages Reference

    ### Oracle 8i 提供的 PL/SQL 包参考知识点 #### 一、概述 《Oracle 8i Supplied PL/SQL Packages Reference》是Oracle官方为数据库管理员(DBA)和开发人员提供的一本权威指南。该书主要介绍了Oracle 8i版本中...

Global site tag (gtag.js) - Google Analytics