在里边执行下边的,把下边这些放到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
应该是万无一失了,再有问题留言吧
在你的存储过程里面定义一个变量:v_HH24 CHAR(2) := '00'
begin后面给变量赋值:
v_HH24 := to_char(sysdate, 'HH24')
然后在你执行的代码外面加上:
IF v_HH24 = '02' THEN
你的代码
end if
然后使用下面的脚本创建job:
begin
sys.dbms_job.submit(job =>:job,
what =>'你的存储过程名字',
next_date =>to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval =>'SYSDATE+60/1440')
commit
end
/
将下面的存储过程名称换成实际的存储过程名称,就可以实现您要的功能的,
现为你写的,直接在pl/sql dev里面执行就行了,有啥问题再联系我。
上面一段是删除job,后面的是建立job,我写了判断语句,可以随意执行
参考oracle的 dbms_job包。
---------------------华丽丽的分割线----------------------------
DECLARE
i_count number
job_num number
BEGIN
select count(job) into i_count from user_jobs where upper(what)='存储过程名称'
if i_count>0 then
select job into job_num from user_jobs where upper(what)='存储过程名称'
dbms_job.remove(job_num)
end if
END
/
commit
DECLARE X NUMBER
BEGIN
DBMS_JOB.SUBMIT
( job => X
,what => '存储过程名称'
,next_date => to_date(to_char(sysdate+1,'yyyy-mm-dd')||' 01:00:00','yyyy-mm-dd hh24:mi:ss')
,interval => 'SYSDATE+1'
,no_parse => TRUE
)
END
/
commit
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)