oracle调度怎么写,oracle作业调度

oracle的方法怎么写

01.CREATE OR REPLACE FUNCTION get_short_name(p_username VARCHAR2) RETURN VARCHAR2 IS

东兰网站建设公司成都创新互联公司,东兰网站设计制作,有大型网站制作公司丰富经验。已为东兰上1000家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的东兰做网站的公司定做!

02.v_username VARCHAR2(1000);

03.

04.BEGIN

05.v_username := p_username;

06.

07.IF INSTR(v_username, 'TenGigabitEthernet') 0 THEN

08.v_username := REPLACE(v_username, 'TenGigabitEthernet', 'TGE');

09.END IF;

10.

11.RETURN v_username;

12.

13.EXCEPTION

14.WHEN NO_DATA_FOUND THEN

15.return null;

16.WHEN OTHERS THEN

17.return null;

18.

19.END get_short_name;

如何调整oracle中job的调度时间

用SCHEDULER,两个SCHEDULER合并,前一个是通常的情况(不包括最后一天),另外一个是最后1天的,各自定义后再合并。

各位大神,我有个oracle存储过程,每月1日,5点7点9点13点14点16点18点,怎么去调度?

这个东西,你为什么不登录windows的执行计划?

日期时间配合去执行存储过程。我一般会采用windows的执行计划

然后调用cmd,然后cmd执行这个存储过程。

Oracle 的存储过程怎么写。?

oracle 存储过程的基本语法

1.基本结构

CREATE OR REPLACE PROCEDURE 存储过程名字

(

参数1 IN NUMBER,

参数2 IN NUMBER

) IS

变量1 INTEGER :=0;

变量2 DATE;

BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT

将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条

记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)

例子:

BEGIN

SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;

EXCEPTION

WHEN NO_DATA_FOUND THEN

xxxx;

END;

...

3.IF 判断

IF V_TEST=1 THEN

BEGIN

do something

END;

END IF;

4.while 循环

WHILE V_TEST=1 LOOP

BEGIN

XXXX

END;

END LOOP;

5.变量赋值

V_TEST := 123;

6.用for in 使用cursor

...

IS

CURSOR cur IS SELECT * FROM xxx;

BEGIN

FOR cur_result in cur LOOP

BEGIN

V_SUM :=cur_result.列名1+cur_result.列名2

END;

END LOOP;

END;

7.带参数的cursor

CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;

OPEN C_USER(变量值);

LOOP

FETCH C_USER INTO V_NAME;

EXIT FETCH C_USER%NOTFOUND;

do something

END LOOP;

CLOSE C_USER;

8.用pl/sql developer debug

连接数据库后建立一个Test WINDOW

在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

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('调度名','调度属性','调度值');

至此,定时任务完成。


网站栏目:oracle调度怎么写,oracle作业调度
本文路径:http://csdahua.cn/article/hsppip.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流