oracle預存程序與job

來源:互聯網
上載者:User

標籤:長度   運行   where   時間設定   proc   objects   object   就會   預存程序   

首先預存程序是幹什麼的?job是幹什麼的?

預存程序:相當於一個複雜的sql,用來執行自訂的複雜的功能,建立了之後會存入一個表裡,可以通過job來執行預存程序,實現我們需要的功能

job:實際上就是資料庫內建的定時任務,可以設定預存程序什麼時間執行的這麼一種功能,是資料庫內建的,

==========================預存程序==========================預存程序可以通過以寫複雜sql的形式來實現自訂的特殊功能,由自己書寫定義,定義後存入內建的表裡定義格式:

create or replace procedure 名字(參數(可有可無))
as   .....       
begin    
 ...........
end;     

例子:

1:建立一個無參數的名為test_job的預存程序,作用是像表裡添加系統時間

create or replace procedure test_job
as
begin
insert into t_job values(sysdate);---向表裡添加資料
end;2:建立一個名為test_user的預存程序,具體設定圖下,紅字為解釋

create or replace procedure test_user(username1 in varchar2(25))  --參數為username1,in代表是輸入參數,參數的資料類型和長度
as vs_username VARCHAR2(4000); --as後面可以定義變數,定義的變數可以在下面自訂的sql中引用 ;
begin   --自訂的sql功能開始
  select username into vs_username from t_user where username=username1;  --將表中查出的username欄位的值付給自訂的變數vs_username,into是oracle的一個關鍵字
  DBMS_OUTPUT.PUT_LINE(vs_username);--將結果列印輸出
end;    --自訂的sql功能結束

查看定義的預存程序:

select * from user_objects where object_type=‘PROCEDURE‘;    -- 可以查看自訂的預存程序

 

=============================job===================================

job是oracle本身內建的一個功能,可以自訂job,指定什麼時候執行預存程序,定義好之後會存入內建的表裡,根據定義的時間來執行預存程序

定義的格式:
declare      
   job1 number;   --指定名字
begin
   dbms_job.submit(job1, ‘test_job;‘, sysdate, ‘sysdate+5/1440‘);--制定名字,要執行的預存程序,時間格式,具體的時間設定,這裡是每5分鐘執行一次預存程序
end;查看定義好的job:

select * from dba_jobs;--所有的job,管理使用者下的查詢
select * from user_jobs;--個人使用者下的查詢
select * from dba_jobs_running;--查詢正在啟動並執行job,這個有待確認

這樣定義好job之後,我們定義的預存程序就會根據定義的job定期執行。

====================小例子開始===============================

create table t_job(a date);--建立表

--建立預存程序
create or replace procedure test_job
as
begin
insert into t_job values(sysdate);---向表裡添加資料
end;

--定義job
declare      
   job1 number;
begin
   dbms_job.submit(job1, ‘test_job;‘, sysdate, ‘sysdate+5/1440‘);--每5分鐘執行一次,定義完後job就是啟動並執行
end;

select * from t_job; ---可以每隔5分鐘查看一次表裡看看有沒有增加資料

====================小例子結束===============================

下面是對job的一些操作
--=============停止job==============
begin
dbms_job.broken(25,false);--true == y =停止,false ==N =執行
end;
/
--===============刪除job=============
begin
dbms_job.remove(24);
end;
/
--================更改job時間========

begin
dbms_job.Interval(25, ‘sysdate+5/1440‘);--更改指定job的時間設定
end;
/

 這裡唯寫了broken/remove/Interval三個方法

更多方法和job表結構請看:http://www.cnblogs.com/xueershewang/p/7354936.html

 時間的設定請看:http://www.cnblogs.com/xueershewang/p/7355286.html

oracle預存程序與job

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.