所以我们试图做的是创建一个执行批处理文件的过程。
我们一直在忙于工作指导,但似乎无法正常工作。
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;
/
因此,我希望您必须以大写形式编写job_type。可能是job_action小写字母,但我不确定是否存在。
如果错误在其他地方,则必须检查:
*_SCHEDULER_JOB_LOG
*_SCHEDULER_JOB_RUN_DETAILS
我可以在其中找到足够的信息,以使用mkdir将示例从文档迁移到linux。