熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE特殊包和DBMS

2013-11-13 22:12:10  來源: Oracle 

  Oracle提供了幾個包它們可以用來完成很多任務從內部進程通信到文件I/O到在PL/SQL塊中動態創建和執行SQL語句所有這些包由SYS用戶所擁有—當Oracle最初安裝時兩個用戶中的一個這些包中最重要的包括
  
    DBMS_Alert 不用輪詢就允許應用命名並發出警告條件信號的過程與函數
    DBMS_DDL 允許獲取PL/SQL程序內部一定數量的DDL語句的過程
    DBMS_Describe 為存儲過程與函數描述API的過程
    DBMS_Job 管理BLOBsCLOBsNCLOBs與BFILEs的過程與函數
    DBMS_Output 允許PL/SQL程序生成終端輸出的過程與函數
    DBMS_Pipe 允許數據庫會話使用管道通信(通信頻道)的過程與函數
    DBMS_SQL 在PL/SQL程序內部執行動態SQL的過程與函數
    DBMS_Utility DBMS_Utility
    UTL_File 允許PL/SQL程序讀寫服務器文件系統上的文本文件的過程與函數
  DBMS_Job包的用法
  
  包含以下子過程
  Broken()過程
  change()過程
  Interval()過程
  Isubmit()過程
  Next_Date()過程
  Remove()過程
  Run()過程
  Submit()過程
  User_Export()過程
  What()過程
  
  Broken()過程更新一個已提交的工作的狀態典型地是用來把一個已破工作標記為未破工作
  這個過程有三個參數job broken與next_date
  
  PROCEDURE Broken (job IN binary_integer
  Broken IN boolean
  next_date IN date :=SYSDATE)
  
  job參數是工作號它在問題中唯一標識工作
  broken參數指示此工作是否將標記為破——TRUE說明此工作將標記為破而FLASE說明此工作將標記為未破
  next_date參數指示在什麼時候此工作將再次運行此參數缺省值為當前日期和時間
  
  Change()過程用來改變指定工作的設置
  這個過程有四個參數jobwhat next_date與interval
  
  PROCEDURE Change (job IN binary_integer
  What IN varchar
  next_date IN date
  interval IN varchar)
  
  此job參數是一個整數值它唯一標識此工作
  What參數是由此工作運行的一塊PL/SQL代碼塊
  next_date參數指示何時此工作將被執行
  interval參數指示一個工作重執行的頻度
  
  Interval()過程用來顯式地設置重執行一個工作之間的時間間隔數
  這個過程有兩個參數job與interval
  
  PROCEDURE Interval (job IN binary_integer
  Interval IN varchar)
  
  job參數標識一個特定的工作interval參數指示一個工作重執行的頻度
  
  ISubmit()過程用來用特定的工作號提交一個工作
  這個過程有五個參數jobwhatnext_dateinterval與no_parse
  
  PROCEDURE ISubmit (job IN binary_ineger
  What IN varchar
  next_date IN date
  interval IN varchar
  no_parse IN booean:=FALSE)
  
  這個過程與Submit()過程的唯一區別在於此job參數作為IN型參數傳遞且包括一個
  由開發者提供的工作號如果提供的工作號已被使用將產生一個錯誤
  Next_Date()過程用來顯式地設定一個工作的執行時間這個過程接收兩個參數job與next_date
  
  PROCEDURE Next_Date(job IN binary_ineger
  next_date IN date)
  
  job標識一個已存在的工作next_date參數指示了此工作應被執行的日期與時間
  
  Remove()過程來刪除一個已計劃運行的工作這個過程接收一個參數
  
  PROCEDURE Remove(job IN binary_ineger);
  
  job參數唯一地標識一個工作這個參數的值是由為此工作調用Submit()過程返回的job參數的值
  已正在運行的工作不能由調用過程序刪除
  
  Run()過程用來立即執行一個指定的工作這個過程只接收一個參數
  
  PROCEDURE Run(job IN binary_ineger)
  
  job參數標識將被立即執行的工作
  
  使用Submit()過程工作被正常地計劃好
  這個過程有五個參數jobwhatnext_dateinterval與no_parse
  
  PROCEDURE Submit ( job OUT binary_ineger
  What IN varchar
  next_date IN date
  interval IN varchar
  no_parse IN booean:=FALSE)
  
  job參數是由Submit()過程返回的binary_ineger這個值用來唯一標識一個工作
  what參數是將被執行的PL/SQL代碼塊
  next_date參數指識何時將運行這個工作
  interval參數何時這個工作將被重執行
  no_parse參數指示此工作在提交時或執行時是否應進行語法分析——TRUE
  指示此PL/SQL代碼在它第一次執行時應進行語法分析
  而FALSE指示本PL/SQL代碼應立即進行語法分析
  
  User_Export()過程返回一個命令此命令用來安排一個存在的工作以便此工作能重新提交
  此程序有兩個參數job與my_call
  
  PROCEDURE User_Export(job IN binary_ineger
  my_call IN OUT varchar)
  
  job參數標識一個安排了的工作my_call參數包含在它的當前狀態重新提交此工作所需要
  的正文
  
  What()過程應許在工作執行時重新設置此正在運行的命令這個過程接收兩個參數job與what
  
  PROCEDURE What (job IN binary_ineger
  What IN OUT varchar)
  
  job參數標識一個存在的工作what參數指示將被執行的新的PL/SQL代碼
  
  一個簡單例子
  
  創建測試表
  SQL> create table a(a date);
  
  表已創建
  
  創建一個自定義過程
  SQL> create or replace procedure test as
   begin
   insert into a values(sysdate);
   end;
   /
  
  過程已創建
  
  創建JOB
  SQL> variable job number;
  SQL>
  SQL> begin
   dbms_jobsubmit(:jobtest;sysdatesysdate+/);  每天分鐘即一分鐘運行test過程一次
   end;
   /
  
  PL/SQL 過程已成功完成
  
  運行JOB
  SQL> begin
   dbms_jobrun(:job);
   end;
   /
  
  PL/SQL 過程已成功完成
  
  SQL> select to_char(ayyyy/mm/dd hh:mi:ss) 時間 from a;
  
  時間
  
  // ::
  // ::
  // ::
  
  刪除JOB
  SQL> begin
   dbms_jobremove(:job);
   end;
   /
  
  PL/SQL 過程已成功完成
From:http://tw.wingwit.com/Article/program/Oracle/201311/18451.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.