从Oracle运行.bat脚本

时间:2015-05-22 20:05:52

标签: oracle batch-file plsql

我有一个批处理脚本,双击,使用从.csv导入的值填充表。 我想用PL / SQL脚本执行该脚本。所以我做了:

    BEGIN
    SYS.DBMS_SCHEDULER.CREATE_JOB( job_name => 'e_job',
        job_type => 'EXECUTABLE',
        job_action => 'C:\WINDOWS\system32\cmd.exe',
        job_class => 'DEFAULT_JOB_CLASS',
        comments => 'Job to call batch script on Windows',
        auto_drop => FALSE,
        number_of_arguments => 3,
        enabled => FALSE);

    SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE( job_name => 'e_job', argument_position => 1, argument_value => '/q'); 
    SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE( job_name => 'e_job', argument_position => 2, argument_value => '/c'); 
    SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE( job_name => 'e_job', argument_position => 3, argument_value => '"E:\temp\StartLoad.bat"'); 
    SYS.DBMS_SCHEDULER.ENABLE( 'e_job' ); 


   END;

    BEGIN
    DBMS_SCHEDULER.RUN_JOB('example_job');
    END;

我没有收到任何错误,但我的表格中没有包含任何值。 我必须说,如果在Windows资源管理器中双击执行,我的脚本工作正常

1 个答案:

答案 0 :(得分:0)

CREATE_JOB电话中,您已将新作业命名为“e_job”,但在RUN_JOB电话中,您正在运行“example_job”。更改RUN_JOB调用以调用'e_job'。

我还建议您在批处理文件中执行一些清楚地表明批处理文件已运行的操作 - 尝试在批处理文件的最开始添加echo I ran OK! > c:\e_job.log。通过这种方式,您可以通过查找日志文件来确定批处理文件是否已执行。