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