前言
Oracle提供了幾個包
DBMS_Alert 不用輪詢就允許應用命名並發出警告條件信號的過程與函數
DBMS_DDL 允許獲取PL/SQL程序內部一定數量的DDL語句的過程
DBMS_Describe 為存儲過程與函數描述API的過程
DBMS_Job 管理BLOBs
DBMS_Output 允許PL/SQL程序生成終端輸出的過程與函數
DBMS_Pipe 允許數據庫會話使用管道通信(通信頻道)的過程與函數
DBMS_SQL 在PL/SQL程序內部執行動態SQL的過程與函數
DBMS_Utility
UTL_File 允許PL/SQL程序讀寫服務器文件系統上的文本文件的過程與函數
用DBMS_JOB來實現高級計劃任務
程序有三個參數
dbms_job
next_date=sysdate+
interval=
問題是
上面的例子讓該任務每小時運行一次
一個任務在下午
另一個任務在第二天早上
為了實現高級計劃任務
Schedule a snapshot to be run on this instance every hour
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance;
提交任務從
dbms_job
jobno
trunc(sysdate)+
TRUE
instno);
提交任務從
dbms_job
jobno
trunc(sysdate+
TRUE
instno);
提交任務從
dbms_job
jobno
trunc(sysdate+
TRUE
instno);
提交任務從周一到周五早上
dbms_job
jobno
trunc(sysdate+
least(
next_day(SYSDATE
next_day(SYSDATE
next_day(SYSDATE
next_day(SYSDATE
next_day(SYSDATE
)
+
TRUE
instno);
commit;
end;
DBMS_Job包的用法例子
SQL> create table a(a date);
表已創建
SQL> create or replace procedure test as
過程已創建
SQL> variable job
SQL>
SQL> begin
如果要按照分鐘來執行最好使用
PL/SQL過程已成功完成
SQL> begin
PL/SQL過程已成功完成
SQL> select to_char(a
時間
SQL>begin
SQL> begin
PL/SQL過程已成功完成
From:http://tw.wingwit.com/Article/program/Oracle/201311/18928.html