如何从我的 oracle pl sql 程序运行 bat 文件

Nic*_*ick 1 oracle plsql batch-file

我在我的 oracle 数据库上创建了一个目录:示例:

CREATE DIRECTORY execdir AS 'ABXD/EFGH';
grant execute on directory execdir to public;
Run Code Online (Sandbox Code Playgroud)

现在,我的 bat 文件放在网络驱动器上,它是:

//ABXD/EFGH
Run Code Online (Sandbox Code Playgroud)

注意:ABXD 已经挂载在 oracle 数据库中

我的 bat 文件名如下:sample.bat

bat文件内容:

@echo off
pushd //ABXD/EFGH
FOR /f %%i IN ('dir /o:-d /b') DO (set LAST=%%i)
ren %LAST% data_1.jpg
popd
Run Code Online (Sandbox Code Playgroud)

Lit*_*oot 5

你可以使用DBMS_SCHEDULER. Oracle 技术网上有一个很好的解释,所以 - 看看。

简而言之:您不能直接运行 .BAT 文件;首先调用 CMD.EXE,让它运行你的 .BAT 文件。

摘自该页面:

BEGIN
   DBMS_SCHEDULER.create_job ('myjob',
                              job_action            => 'C:\WINDOWS\SYSTEM32\CMD.EXE',
                              number_of_arguments   => 3,
                              job_type              => 'executable',
                              enabled               => FALSE);

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

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

   DBMS_SCHEDULER.set_job_argument_value ('myjob', 3, 'c:\temp\test.bat');

   DBMS_SCHEDULER.enable ('myjob');
END;
Run Code Online (Sandbox Code Playgroud)