
在里边执行下边的,把下边这些放到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'
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)