Oracle建立儲存過程及job定時實施範例

2021-09-01 15:03:21 字數 1816 閱讀 8474

1) 查詢出前一天的資料,並插入到另一表中的儲存過程:

sql**   

----------建立一儲存過程:

create

orreplace

procedure p_test is

begin

insert

into test_table  

(id, content, account,states)  

select

'ty' || to_char(current_timestamp,'yyyymmddhh24missff'),  

'test content....',  

a.account,  

1  from intf.serv@databaselink       a,  

intf.merge_staff@databaselink b,  

intf.merge_site@databaselink  c  

where a.begin_staff_id = b.staff_id(+)  

and a.begin_site_id = c.site_id(+)  

and a.begin_date >= trunc(sysdate-1, 'dd')  

and a.begin_date 

and a.class_id2 = '111111111';  

commit;  

exception  

when others then

rollback;  

end p_test ;  

2)定製一job,實時執行建立的儲存過程,如下job為每間隔10分鐘執行一次:

sql**   

declare   job1   number(10);   

begin

job1:=11;   

dbms_output.put_line(   job1   );   

sys.dbms_job.submit(job => job1,  

what => 'p_test;',  

next_date => sysdate,  

interval => 'sysdate + 10/(60*24)');  

commit;  

end;  

注意:這句what => 'p_test;',這裡的儲存過程名後面一定要記得加上英文分號。當然如果儲存過程要執行的操作比較簡單,這裡也可以直接寫sql語句,即如:

sql**   

what => 'update table_name set cnt= 0;  

commit;',  

3)建立完job後發現job不執行,查詢原因。一般可能是cjq0程序失效導致的,此時要重起cjq0程序。具體操作如下:

首先設定job_queue_processes為0,oracle會殺掉cjq0及相應job程序:

sql**   

alter system set job_queue_processes = 0;   

其次再等2~3分鐘後,重新設定:

sql**   

alter system set job_queue_processes = 10;   

此時pmon會重起cjq0程序了。

4)oracle獲取時間精確到毫秒:

sql**   

select to_char(current_timestamp,'yyyymmddhh24missff') from test_table;  

這裡獲取的時間就是精確到毫秒以後三位的,如20090409123030230000

oracle儲存過程 建立儲存過程語句

一 建立儲存過程語句 語法 create or replace procedure testname argument1 type1,as begin end testname 例子 create orreplace procedure test name arg1 varchar2,arg2 nu...

Oracle 建立表,儲存過程

1.首先建立乙個customer 表 create table customer customerid varchar2 10 primary key,customername varchar2 20 custoemr varchar2 8 custoemrage int 2.插入四行資料 inse...

oracle儲存過程的建立

實現了模組化程式設計。儲存過程具有對資料庫立即訪問的功能。使用儲存過程可以加快程式的執行速度。使用儲存過程可以減少網路流量。使用儲存過程可以提高資料庫的安全性。當然說這麼多理論的東西,還不如自己說一下自己為何要用儲存過程,我用儲存過程是因為想解決檢視不適合用與表的更新,也能方便移植 自己的軟體給被人...