自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何正確在Oracle運行操作系統(tǒng)命令?

數(shù)據(jù)庫 Oracle
以下的文章主要是介紹如何在Oracle運行操作的系統(tǒng)命令中創(chuàng)建相關(guān)程序包,以下就是文章的主要內(nèi)容的介紹,望你瀏覽之后會有所收獲。

我們大家都知道在Oracle 8i數(shù)據(jù)庫中,我們經(jīng)常會發(fā)現(xiàn)出現(xiàn)會Oracle運行操作的系統(tǒng)命令.就一般情況而言,利用Oracle Enterprise Manager來設(shè)定作業(yè)能達(dá)到我們想要的目的.但是由于OEM在設(shè)定作業(yè)缺乏靈活性,設(shè)定的作業(yè)的參數(shù)是固定的。

在實際應(yīng)用當(dāng)中往往需要在SQL語句當(dāng)中運行需要隨時Oracle運行操作系統(tǒng)命令.Oracle 8i沒有直接運行OS命令的語句,我們可以利用DBMS_PIPE程序包實現(xiàn)這一要求.

DBMS_PIPE通過創(chuàng)建管道,可以讓至少兩個進(jìn)程進(jìn)行通信.Oracle的管道與操作系統(tǒng)的管道在概念上有相同的地方,但是在實現(xiàn)機制不同.
下面介紹實現(xiàn)具體步驟:

1 創(chuàng)建一個程序包,姑且起名叫DAEMON,SQL語句如下:

創(chuàng)建daemon程序包

  1. CREATE OR REPLACE PACKAGE BODY daemon AS  

execute_system是實現(xiàn)運行os命令的函數(shù)

  1. FUNCTION execute_system(command VARCHAR2,   
  2. timeout NUMBER DEFAULT 10)   
  3. RETURN NUMBER IS   
  4. status NUMBER;   
  5. result VARCHAR2(20);   
  6. command_code NUMBER;   
  7. pipe_name VARCHAR2(30);   
  8. BEGIN   
  9. pipe_name :DBMS_PIPE.UNIQUE_SESSION_NAME;   
  10. DBMS_PIPE.PACK_MESSAGE(''SYSTEM'');   
  11. DBMS_PIPE.PACK_MESSAGE(pipe_name);   
  12. DBMS_PIPE.PACK_MESSAGE(command);   

向daemon管道發(fā)送表示命令的字符

  1. status :DBMS_PIPE.SEND_MESSAGE(''daemon'', timeout);   
  2. IF status <> 0 THEN   
  3. RAISE_APPLICATION_ERROR(-20010,   
  4. ''Execute_system: Error while sending. Status = '' || status);   
  5. END IF;   
  6. status :DBMS_PIPE.RECEIVE_MESSAGE(pipe_name, timeout);   
  7. IF status <> 0 THEN   
  8. RAISE_APPLICATION_ERROR(-20011,   
  9. ''Execute_system: Error while receiving.   
  10. Status = '' || status);   
  11. END IF;   

獲取返回結(jié)果

  1. DBMS_PIPE.UNPACK_MESSAGE(result);   
  2. IF result <> ''done'' THEN   
  3. RAISE_APPLICATION_ERROR(-20012,   
  4. ''Execute_system: Done not received.'');   
  5. END IF;   
  6.  
  7. DBMS_PIPE.UNPACK_MESSAGE(command_code);   
  8. DBMS_OUTPUT.PUT_LINE(''System command executed. result = '' ||   
  9. command_code);   
  10. RETURN command_code;   
  11. END execute_system;   
  12. stop是讓daemon停止*/   
  13. PROCEDURE stop(timeout NUMBER DEFAULT 10) IS   
  14. status NUMBER;   
  15. BEGIN   
  16. DBMS_PIPE.PACK_MESSAGE(''STOP'');   
  17. status :DBMS_PIPE.SEND_MESSAGE(''daemon'', timeout);   
  18. IF status <> 0 THEN   
  19. RAISE_APPLICATION_ERROR(-20030,   
  20. ''stop: error while sending. status = '' || status);   
  21. END IF;   
  22. END stop;   
  23. END daemon;  

 

通過Sql*Plus運行以上語句,將為當(dāng)前用戶創(chuàng)建daemon程序包. 以上的相關(guān)內(nèi)容就是對在Oracle運行操作系統(tǒng)命令的創(chuàng)建一個程序包介紹,望你能有所收獲。

【編輯推薦】

  1. 手動Oracle創(chuàng)建數(shù)據(jù)庫的步驟有哪些?
  2. Oracle數(shù)據(jù)比較的兩大妙招
  3. 實現(xiàn)異地Oracle數(shù)據(jù)庫的數(shù)據(jù)同步步驟
  4. Oracle分頁查詢語句的實際應(yīng)用
  5. Oracle字符集中的一些問題總結(jié)

 

責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-21 12:59:21

Oracle運行

2011-08-19 10:17:53

2010-04-08 13:06:02

Unix操作系統(tǒng)

2015-11-19 13:53:22

操作系統(tǒng)購買主機空間

2009-11-16 16:51:11

操作系統(tǒng)Oracle優(yōu)

2010-05-06 15:29:53

Oracle數(shù)據(jù)復(fù)制

2009-06-19 20:35:07

Linux操作系統(tǒng)

2010-04-14 09:02:57

Unix操作系統(tǒng)

2010-04-19 13:08:35

Unix操作系統(tǒng)

2010-04-13 16:06:08

Unix操作系統(tǒng)

2010-04-20 15:58:30

Unix操作系統(tǒng)

2010-04-20 10:19:51

Unix操作系統(tǒng)

2010-04-14 18:23:06

Unix操作系統(tǒng)

2010-04-19 13:47:20

Unix操作系統(tǒng)

2009-12-10 17:27:19

Linux操作系統(tǒng)

2010-05-07 16:50:42

Oracle trun

2010-05-06 17:59:50

Unix命令

2010-04-19 13:31:06

Unix操作系統(tǒng)

2010-04-20 12:02:22

Unix操作系統(tǒng)

2010-04-15 15:21:43

Unix操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號