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