oracle写一个定时执行的sql语句,JOB也行

发布网友 发布时间:2022-04-19 16:54

我来回答

2个回答

热心网友 时间:2023-08-28 17:55

create table a(a date);

create or replace procere test as
begin
insert into a values(sysdate);
end;

热心网友 时间:2023-08-28 17:55

如果你需要在 Oracle 数据库中每隔一个小时执行一次一组 SQL 语句,可以使用 Oracle 提供的 Job Scheling 功能。具体步骤如下:

下面是一个示例代码,演示如何在 Oracle 数据库中创建一个每隔一个小时执行一次 SQL 语句的定时任务:

-- 创建存储过程,包含需要执行的 SQL 语句

CREATE OR REPLACE PROCEDURE my_job

IS

BEGIN

-- 执行 SQL 语句

EXECUTE IMMEDIATE 'create table a_tmp as select * from a_remote';

EXECUTE IMMEDIATE 'drop table a_local';

EXECUTE IMMEDIATE 'RENAME a_tmp TO a_local';

EXECUTE IMMEDIATE 'Create Index i1 on a_local(col1)';

EXECUTE IMMEDIATE 'Create Index i2 on a_local(col2)';

END;

/

-- 创建一个每隔一个小时执行一次 my_job 存储过程的定时任务

BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name => 'my_hourly_job',

job_type => 'STORED_PROCEDURE',

job_action => 'my_job',

start_date => SYSTIMESTAMP,

repeat_interval => 'FREQ=HOURLY;INTERVAL=1',

enabled => TRUE);

END;

/

在上述示例代码中,首先创建了一个名为 my_job 的存储过程,该存储过程包含需要执行的 SQL 语句。接下来使用 DBMS_SCHEDULER.CREATE_JOB() 存储过程创建了一个新的定时任务,该任务名为 my_hourly_job,类型为 STORED_PROCEDURE,执行的是 my_job 存储过程。定时任务的开始时间为当前时间,执行间隔为每隔一个小时,启用该定时任务。

注意:在实际使用中,需要将 my_job 存储过程中的 SQL 语句替换成自己需要执行的 SQL 语句。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com