Oracle SQL运行批处理

问题描述 投票:0回答:1

所以我们试图做的是创建一个执行批处理文件的过程。

我们一直在忙于工作指导,但似乎无法正常工作。

CREATE OR REPLACE PROCEDURE launch_bat AS
BEGIN
   DBMS_SCHEDULER.create_job ('Export_Case_Job',
                             job_action            => 'C:\WINDOWS\SYSTEM32\CMD.EXE',
                              number_of_arguments   => 3,
                              job_type              => 'executable',
                              enabled               => FALSE);

  DBMS_SCHEDULER.set_job_argument_value ('Export_Case_Job', 1, '/q');

  DBMS_SCHEDULER.set_job_argument_value ('Export_Case_Job', 2, '/c');

  DBMS_SCHEDULER.set_job_argument_value ('Export_Case_Job', 3, 'C:\scripts\helloFolder.bat');

  DBMS_SCHEDULER.enable ('Export_Case_Job');
END;
/


call launch_bat;

它说它已编译,但在文件夹中看不到任何结果。我们还尝试在通话中提供文件名。

我们有Oracle 10.2,所以我们不能使用exec xp_cmdshell

为什么程序?当我们获得新的收入数据时,我们将使用一个过程执行触发器,该过程将用于批处理文件,该批处理文件将在我们的文件夹内创建某些信息作为测试目的。

[主要焦点是oracle sql执行批处理文件。

批处理内容

ECHO OFF
mkdir C:\scripts\folder

提前感谢!

oracle batch-file plsql oracle10g procedure
1个回答
0
投票

[当我将您的示例与文档https://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse.htm#CHDJHBAH中的示例进行比较时:

BEGIN
 DBMS_SCHEDULER.CREATE_JOB(
   job_name             => 'MKDIR_JOB',
   job_type             => 'EXECUTABLE',
   number_of_arguments  => 3,
   job_action           => '\windows\system32\cmd.exe',
   auto_drop            => FALSE,
   credential_name      => 'TESTCRED');

 DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('mkdir_job',1,'/c');
 DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('mkdir_job',2,'mkdir');
 DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('mkdir_job',3,'\temp\extjob_test_dir');
 DBMS_SCHEDULER.ENABLE('MKDIR_JOB');
END;
/   
  1. 可执行文件与可执行文件
  2. \ windows \ system32 \ cmd.exe与C:\ WINDOWS \ SYSTEM32 \ CMD.EXE

因此,我希望您必须以大写形式编写job_type。可能是job_action小写字母,但我不确定是否存在。

如果错误在其他地方,则必须检查:

*_SCHEDULER_JOB_LOG
*_SCHEDULER_JOB_RUN_DETAILS

我可以在其中找到足够的信息,以使用mkdir将示例从文档迁移到linux。

© www.soinside.com 2019 - 2024. All rights reserved.