考试网 >> IT认证 >> Oracle >> Oracle指导 >> 在Oracle运行操作系统命令

在Oracle运行操作系统命令

发布时间:2006-06-28 09:46     点击:
分页:[1] 2 3 4 5  下一页

        在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);  
分页:[1] 2 3 4 5  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有