我正在尝试从oracle数据库运行exe。 我想在插入或更新表时触发一个触发器。一旦表更新,我必须运行我的D驱动器中的exe。
我已经尝试过调度程序,但它会出错。 我的代码如下:
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM (
program_name => 'program_name',
program_type => 'EXECUTABLE',
program_action => 'D:/myproc.exe',
enabled => TRUE,
comments => 'run exe'
);
END;
/
我收到以下错误
ORA-27486:权限不足 ORA-06512:在" SYS.DBMS_ISCHED",第5行 ORA-06512:在" SYS.DBMS_SCHEDULER",第36行 ORA-06512:第2行
我还有一个问题。
哪个是运行exe的最佳方法?从数据库或代码?
提前致谢
答案 0 :(得分:1)
您可以使用 DBMS_SCHEDULER 安排脚本。
根据您的操作系统(以下Windows中的示例),您可以这样:
BEGIN
dbms_scheduler.create_job('MY_JOB',
job_action=>'C:\WINDOWS\SYSTEM32\CMD.EXE',
number_of_arguments=>3,
job_type=>'executable',
start_date => SYSTIMESTAMP,
repeat_interval => 'freq=hourly; byminute=0,30; bysecond=0;',
end_date => NULL,
enabled=> false);
dbms_scheduler.set_job_argument_value('MY_JOB',1,'/q');
dbms_scheduler.set_job_argument_value('MY_JOB',2,'/c');
dbms_scheduler.set_job_argument_value('MY_JOB',3, 'D:/my_sql.bat.bat');
dbms_scheduler.enable('MY_JOB');
END;
/
现在你的my_sql.bat看起来像是:
sqlplus user@sid/password @D:\scripts\script.sql
exit