PL SQL儲存過程,定時任務的使用教程

2021-10-24 16:28:02 字數 2347 閱讀 7584

-步驟:

建表建立自增seq序列

建立乙個簡單的插入資料儲存

建立dbms_job.submit()定時任務

定時任務移除

--1.table,測試表

create

table person_20201011(

id number primary

key,

name varchar2(10)

notnull

);

--2.sequence

create sequence seq_pid;

--3.procedure

create

orreplace

procedure xperson is

begin

insert

into person_20201011

values

(seq_pid.nextval,

'admin'

|| seq_pid.currval)

;--表有兩個字段,其中插入的第乙個字段根據主鍵id序列自增,每次使用序列+1,第二個欄位的值為admin連線上序列的當前值

commit

;--記得提交事務(插入更新等操作)

end;

首先要了解一下dbms_job.submit(),以及它的引數和型別,是怎麼使用的

–submit 有四個引數,

引數一:job(out模式的binary_integer型別),是用來提交定時任務時接受任務編號的(建立時候系統分配的)

引數二:varchar2,要呼叫的儲存過程的名稱;例如**『過程名字();』**

引數三:date,第一次執行任務的時間

引數四:interval(varchar2),任務執行的時間間隔

引數四是乙個字串,但是字串必須是date型別;例如』sysdate+1』表示隔一天執行一次

間隔時間的計算方式,引數四-引數三;

--4.dbms_job 定時任務建立     定時插入資料  (定義並提交定時任務)

declare

jid binary_integer;

--宣告一下系統分配的編號,這個資料型別要注意,詳情請看上面的引數說明

begin

dbms_job.submit(jid,

'xperson();'

,sysdate,

'sysdate+10/(24*60*60)');

--第乙個引數是系統分配的編號,

--注意引數二是儲存過程的呼叫,後面要有括號和分號,它是乙個字串型別的

--引數三,就是開始的時間了,我這裡使用了當前系統時間

--還有就是第四個引數時間的計算也是字串型別的,我這裡使用了每隔10秒跑一次定時

dbms_output.put_line(

'系統分配的編號:'

|| jid)

;--輸出一下這個系統分配的編號,方便等會移除定時job等

dbms_job.run(jid)

;--執行定時任務

end;

在這邊也可以看到這個定時任務的系統分配額編號

定時任務的編號檢視

這邊也可以看到編號

接下來我們看一下效果

--刪除dbms_job定時任務,其中remove括號中的資料是系統分配給定時任務的編號,具體檢視看第四步的操作

begin

dbms_job.remove(32)

;end

;

這時我們的定時任務就移除了

就到這裡

mysql 儲存過程 定時任務

建立儲存過程 create procedure if not exists test begin insert into test.test time values curdate end set global event scheduler 0 設定任務器 開關 1開 0關 show variab...

Oracle定時任務呼叫儲存過程

刪除core,cmnet,sp,miq,4張表一周之前的資料 create or replace procedure del alarm others cancel info as begin delete m core cancel where sysdate 7 ttime delete m c...

PLSQL建立Oracle定時任務

plsql建立oracle定時任務 1 建立任務執行的儲存過程,如名稱為yxtestjob,向測試表中插入資料 2 定時器對應的dbms jobs資料夾,右鍵新建 new 3 建立任務 注 job的定時執行和時間間隔說明 在使用oracle最匹配的工具plsql的時候,如果用plsql建立定時器呢?...