广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Oracle如何直接运行OS命令(上)

    2018-04-16 10:57:41 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布
    正在看的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;

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告