ORACLE 中user_jobs调用 存储过程

ORACLE 中user_jobs调用 存储过程,第1张

你这个就是我给你写的吧?

在里边执行下边的,把下边这些放到job里:

DECLARE

on_flag NUMBER

out_reason VARCHAR2(4000)

BEGIN

-- Now call the stored program

sp_create_table(on_flag,out_reason)

-- Output the results

:a0 := on_flag

:a1 := out_reason

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line(SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1, 255))

RAISE

END

对了,还不行的话你就换个工具,换toad,找到job,时间设置好了

还有,大妹子,你分真多,哈

不好意思啊,我这老报一个ora-01008的错误,没弄明白

---------------------------------------------------------------------

OK,解决,那些乱七八糟的要绑定变量,程序和执行的你都改一下吧

程序改成:

create or replace PROCEDURE SP_CREATE_TABLE

(

on_flag OUT NUMBER,

out_reason OUT VARCHAR2

)

is

v_sql varchar2(2000)

v_now_date varchar2(8)

v_table_name varchar2(3)

begin

select to_char(sysdate,'yyyymmdd') into v_now_date from dual

select 'xin' into v_table_name from dual

v_sql :='create table '||v_table_name||''||v_now_date||' as select * from abc'

EXECUTE IMMEDIATE v_sql

commit

EXCEPTION

WHEN OTHERS

THEN

on_flag := SQLCODE

out_reason := SUBSTR (SQLERRM, 1, 255)

ROLLBACK

END

程序执行体改成:

DECLARE

on_flag NUMBER

out_reason VARCHAR2(4000)

BEGIN

-- Now call the stored program

sp_create_table(on_flag,out_reason)

END

应该是万无一失了,再有问题留言吧

大概说一下,submit里面这五个参数,意思分别是job就是一个唯一性的整数,可以理解成一个id,job_proc_sync就是个plsql代码块,sysdate就是从多会开始执行这个存储过程,'trunc....'就是指执行这个块的时间段interval间隔。我想这个job没有执行估计是你没使用dbms_job.run(jobno)这个函数

可以通过lasttime减去(nexttime-lasttime)*totaltime 换算成秒计算出Createtime时间

例子如下: 其中49为Job名称

select last_date,

to_date(to_char(last_date, 'yyyymmddHH24miss'), 'yyyymmddHH24miss') -

1 / 24 / 60 / 60 * (next_date - last_date) * 24 * 60 * 60 * total_time createdate,

(next_date - last_date) * 24 * 60 * 60 * total_time startonowsecond

from dba_jobs

where job = '49'


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9631385.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存