使用Oracle数据库中的触发器运行exe

时间:2016-01-28 10:39:38

标签: oracle oracle10g exe oracleclient

我正在尝试从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的最佳方法?从数据库或代码?

提前致谢

1 个答案:

答案 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