甲骨文SQL运行批量

Oracle SQL run batch

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

我们一直在搞乱作业说明,但它似乎无法正常工作。

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

提前致谢!

当我将您的示例与文档中的示例进行比较时 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。