plsql定时执行存储过程(plsql定时执行语句)

http://www.itjxue.com  2023-02-17 16:28  来源:未知  点击次数: 

如何在plsql中执行存储过程

create or replace procedure job_table asv_sql varchar2(2000);begin v_sql:='create table job_test2 as select * from job_test'; EXECUTE immediate v_sql; EXCEPTION WHEN OTHERS THEN rollback;end job_table; 存储过程内不能直接使用create或alter,需要使用EXECUTE执行动态语句才可以 还有执行存储过程,必须在命令窗口内执行

plsql中如何利用job让存储过程每天中午12点和凌晨零点各执行一次

执行方法begin 存储过程名(参数1,参数2);--参数间用逗号隔开,字符型的要加单引号,数字型的直接输入,结尾带分号end;--结尾带分号

PLSQL存储过程

存储过程是 PLSQL 的一个方面的应用,而 PLSQL 是存储过程的基础。

即存储过程需要用到 PLSQL

创建无参存储过程 hello ,无返回值

语法:

删除存储 hello ,语法 drop procedure 过程名

调用存储过程方式一: exec 过程名

exec hello;

调用过程存储方式二: PLSQL 程序

调用过程存储方式三: Java 程序 CallableStatement 接口

创建有存储过程的 raiseSalary (编号),为7369号员工涨工资10%,演示in的语法,大小写不敏感

创建有参存储过程 findEmpNameAndSalAndJob (编号),查询7788号员工的姓名,职位,月薪,返回多个值,演示 out 的用法

用存储过程,写一个计算个人所得税的功能

Oracle中如何定时执行一条SQL语句

通过网上查询,找到一种方案,就是先在oracle里面对要定时的sql写成存储过程,再用DBMS_scheduler对存储过程进行定时执行。

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在PLSQL中,执行下面语句模拟存储过程的调用,执行后要点提交才有反应

[sql] view plain copy

BEGIN

INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);

END;

然后下面建立一个存储过程JOB_TEST

(注意,这里用户需要CREATE JOB权限,可以用超级管理员用户执行下面语句给指定用户赋予该权限)

[sql] view plain copy

Grant?Create?Job?To?指定用户名

[sql] view plain copy

SQLCREATE?OR?REPLACE?PROCEDURE

JOB_TEST

BEGIN

INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);

END;

(此处要执行存储过程不能用exec JB_TEST,这种执行方式只能在命令行中使用)

使用DBMS_SCHEDULER进行定时,这里为每分钟执行一次

[sql] view plain copy

SQL?BEGIN

DBMS_SCHEDULER.CREATE_JOB?(

job_name???????????=??'SCHEDULER_TEST',

job_type???????????=??'STORED_PROCEDURE',

job_action?????????=??'JOB_TEST',

start_date?????????=??sysdate,

repeat_interval????=??'FREQ=MINUTELY;INTERVAL=1');

END;

但是这样子定时任务并不会执行。

我们可以用下面的命令查看一下scheduler的状态

[plain] view plain copy

SQLSELECT?*?FROM?USER_SCHEDULER_JOBS;

此时我们可以看到enable的状态是false的,因此我们需要去启动定时任务

[plain] view plain copy

SQLBEGIN

DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');

END

dbms_scheduler.enable('j_test'); ?--启用jobs ??

dbms_scheduler.disable('j_test'); ?--禁用jobs ? ?

dbms_scheduler.run_job('j_test'); ?--执行jobs ? ?

dbms_scheduler.stop_job('j_test'); ?--停止jobs ??

dbms_scheduler.drop_job('j_test'); ?--删除jobs ?

然后再查询job的enable装态,发现为true了。

然后查看MY_JOB_TEST表,发现每分钟会往里面添加记录。

当需要修改定时任务或者调度的其他属性时,可以用下面的

dbms_scheduler.set_attribute('调度名','调度属性','调度值');

至此,定时任务完成。

如何用plsql每隔5分钟自动执行一次存储过程

1,创建一个存储过程

bb

作用是往pig表中插入数据

sql

create

or

replace

procedure

job_pro_test

as

2

begin

3

insert

into

job_test

values(sysdate);

4

end;

5

/

procedure

created

2,创建一个job,名称为job2010

;作用是每分钟(60×24=1440)执行一次存储过程job_pro_test。

sql

variable

job2010

number;

sql

begin

2

dbms_job.submit(:job2010,'job_pro_test;',sysdate,'sysdate+1/1440');

3

end;

4

/

(责任编辑:IT教学网)

更多

推荐SQL Server文章