oracle儲存過程與job

2022-04-29 08:06:08 字數 2822 閱讀 4979

首先儲存過程是幹什麼的?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三個方法

時間的設定請看:

oracle儲存過程和job

儲存過程 把t ckeck ews表中的資料插入his t neop cmd instance中,把t ckeck ews表資料插入his t ckeck ews要求工單超過5分鐘沒處理置失敗 create or replace procedure p back up ckeckews isewsi...

儲存過程 job任務

最近做了乙個需求,報表月度跑批,第一次做還是挺緊張刺激的。話不多說,直接碼上。job任務 declare job number begin dbms job.submit job job,job名稱 what賦值 job繫結儲存過程 注意儲存過程名稱後面要加上 分號 what pkg tppecs ...

Oracle新增job定時執行儲存過程

1 建立儲存過程 刪除臨時表 createorreplaceproceduresp gs clear temp tablesis tmp tbl namevarchar 30 sqltextvarchar 255 cursorcur tmp tablesisselectobject namefrom...