/*Oracle jobs 導出為執行腳本
就是把user_jobs或dba_jobs,導成DBMS_JOB.SUBMIT可以插入job的格式
其中user_jobs是當前用戶的job,dba_jobs則是全部
下面只是隨便整理了下,可以按照個人需要修改
設置 file_dir file_name 參數
導出文件內容如最後附所視
局限性 要設置utl_file_dir(alter system set utl_file_dir=) ,file_dir要包括在
文件生成在服務端
其實可以封裝成過程,或把結果存入臨時表,或dbms_output.put_line
edit by inreyou 14:41 2007-11-16
*/
Declare
f utl_file.file_type;
jobn integer;
s varchar2(4000);
file_dir varchar(100);--目錄
file_name varchar(100);--文件名
begin
file_dir := ''d:\temp'';
file_name := ''utl_file1.sql'';
f := utl_file.fopen(file_dir, file_name, ''w'');
s := ''declare'' || chr(13) || chr(10) || '' jobno number;'' || chr(13) ||
chr(10) || ''snd varchar2(20);'' || chr(13) || chr(10) || ''begin'';
utl_file.put_line(f, s);
--if export all jobs change user_jobs to dba_jobs
for JS in (select job, log_user, next_date, broken, interval, what
from user_jobs) loop
--dbms_job.user_export(y,s) 這種格式導出作業號插入不好處理
s := ''execute immediate ''''select to_char('' || JS.interval ||
'',''''||chr(39)
||''''yyyy-mm-dd hh24:mi:ss''''||chr(39)||'''') from dual'''' into snd;'';
s := S || chr(13) || chr(10) || ''DBMS_JOB.SUBMIT(jobno, '' || chr(39) ||
JS.what || chr(39) || '',to_date(snd,'' || chr(39) ||
''yyyy-mm-dd hh24:mi:ss'' || chr(39) || '')'' || '','' || chr(39) ||
JS.interval || chr(39) || '');'' || chr(13) || chr(10);
utl_file.put_line(f, s);
--s:=''dbms_job.run(jobno);'';
--utl_file.put_line(f,