Oracle如何直接运行OS命令(上)第1/2页

正在看的oracle教程是:oracle如何直接运行os命令(上)。

  在oracle 8i中,往往会出现要在存储过程中运行操作系统命令的情况。一般来说,利用oracle enterprise manager设定作业时可以达到这个目的。但是由于oem在设定作业缺 乏灵活性,设定的作业的参数是固定的。在实际应用当中往往需要在sql语句当中运行需要随时运行操作系统命令。oracle 8i没有直接运行os命令的语句,我们可以利用dbms_pipe程序包实现这一要求。 

  dbms_pipe通过创建管道,可以让至少两个进程进行通信。oracle的管道与操作系统的管道在概念上有相同的地方,但是在实现机制不同。

  下面介绍实现具体步骤: 

  1、创建一个程序包,姑且起名叫daemon,sql语句如下: 

  /*创建daemon程序包*/ 
  create or replace package body daemon as 
  /*execute_system是实现运行os命令的函数*/ 
  function execute_system(command varchar2, 
  timeout number default 10) 
  return number is 

  status number;
  result varchar2(20);
  command_code number;
  pipe_name varchar2(30);
  begin 
  pipe_name := dbms_pipe.unique_session_name;
  dbms_pipe.pack_message(’system’);
  dbms_pipe.pack_message(pipe_name);
  dbms_pipe.pack_message(command);
  /*向daemon管道发送表示命令的字符*/ 
  status := dbms_pipe.send_message(’daemon’, timeout);
  if status <> 0 then 
  raise_application_error(-20010, 
  ’execute_system: error while sending. status = ‘ || status);
  end if;

1

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐