Oracle SQL запуск партии - PullRequest
       61

Oracle SQL запуск партии

0 голосов
/ 10 февраля 2020

Итак, мы пытаемся создать процедуру для запуска командного файла.

Мы возились с инструкцией по заданию, но, похоже, она не работает должным образом.

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.

Почему процедура? Когда мы получим новые данные о доходах, мы выполним триггер с процедурой, которая будет go для командного файла, этот командный файл создаст определенную информацию в наших папках в качестве теста.

Основное внимание уделяется oracle sql выполнить пакетный файл.

Пакетное содержимое

ECHO OFF
mkdir C:\scripts\folder

Заранее спасибо!

1 Ответ

0 голосов
/ 10 февраля 2020

Когда я сравниваю ваш пример с примером из документов 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. EXECUTABLE и исполняемый файл
  2. \ windows \ system32 \ cmd.exe vs C: \ WINDOWS \ SYSTEM32 \ CMD.EXE

Так что я ожидаю, что вы должны написать job_type в верхнем регистре. Возможно job_action строчными, но я не уверен там.

Если ошибка где-то еще, вы должны проверить:

*_SCHEDULER_JOB_LOG
*_SCHEDULER_JOB_RUN_DETAILS

Где я мог бы найти достаточную информацию для переноса примера из документации в linux с помощью mkdir.

...