亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle存儲過程中任務和管道的應用

2024-08-29 13:50:52
字體:
來源:轉載
供稿:網友
1. 前言 在ORACLE數據庫實際應用過程中,經常把業務處理邏輯的放在存儲過程,客戶端通過ADO進行調用。有些業務邏輯處理量大并且復雜,使客戶端調用存儲過程后,長時間沒有反應,也不知存儲過程運行狀態,本文講述如何在ORACLE通過任務和管道的應用,異步調用存儲過程的方法。 2. 基本原理 1.使用DBMS_JOB包將主處理存儲過程作為任務提交到任務隊列中; 2.主處理存儲過程在運行過程中通過DBMS_PipE包將處理情況放在管道中; 3.監控存儲過程讀取管道,從而了解處理情況; 4.本文沒有描述雙向通信的方式,監控存儲過程可以通過管道發送信息給主處理存儲過程。 3. 具體實現測試 建立測試環境 3.1. 對數據庫的ini進行相關修改,使系統的任務隊列功能打開 對于Oracle9I,只需修設定數據庫的INI內的"JOB_QUEUE_PROCESSES=非0值",如 "JOB_QUEUE_PROCESSES=10",對于ORACLE8I除設定實例ini文件中的"JOB_QUEUE_PROCESSES=非0值"外,還需設定"job_queue_interval=1"。 3.2. 設用用戶權限 由于使用ORACLE中特定的程序包,所以要注重要明文給于用戶系統權限。對當前用戶(測試用戶),賦于以下權力:
    EXECUTE DBMS_PIPE  EXECUTE DBMS_LOCK  EXECUTE DBMS_JOB
3.3. 建立模擬大業務處理存儲過程 本存儲過程通過循環30次,調用DBMS_LOCK.SLEEP(1)(體眠1秒)和寫管道模擬大的處理過程。 具體代碼如下:
    CREATE OR REPLACE PROCEDURE maXPro AS  n integer;  status NUMBER;  BEGIN  FOR N IN 1..30 LOOP  DBMS_PIPE.PURGE('maxpro'); --清除原管道信息  DBMS_PIPE.PACK_MESSAGE(N); --把信息放入緩沖區  status:=DBMS_PIPE.SEND_MESSAGE('maxpro');  DBMS_LOCK.SLEEP(1);  END LOOP;  DBMS_PIPE.PURGE('maxpro'); --清除原管道信息  DBMS_PIPE.PACK_MESSAGE(999999); --把信息放入緩沖區,用999999 表示過程完成  status:=DBMS_PIPE.SEND_MESSAGE('maxpro');  END maxpro;
3.4. 建立讀取管道動態了解處理狀態的存儲過程 以下代碼是對于maxpro存儲過程的狀態進行讀取的過程,主要使用讀取管道的方法,注重:
    status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);
中的"0"參數是很要害的,說明接受等待時間為0秒,表示,調用時假如沒有信息不等待直接返回。 具體代碼如下:
    CREATE OR REPLACE PROCEDURE readmaxpro AS  n integer;  status integer;  begin  --接受等待時間為1秒,可以為0,立即調用或 DBMS_PIPE.RECEIVE_MESSAGE('mypipe') 等待100天  status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);  --status為0為成功可以UNPACK_MESSAGE,1為超時沒有數據, 2為信息太大,3為內部錯誤  IF status <> 0 THEN  DBMS_OUTPUT.PUT_LINE('管道中現在沒有信息返回');  return;  END IF;  DBMS_PIPE.UNPACK_MESSAGE(n);  DBMS_OUTPUT.PUT_LINE('maxpro 的當前進行狀態為' n);  end;
3.5. -起動模擬大業務處理存儲過程為后臺進程的存儲過程(BEGINMAXPRO) 通過DBMS_JOB.SUBMIT(JOB,'maxpro;',sysdate,NULL,FALSE);使"maxpro"為一個任務,在當前時間(sysdate)后執行,當然假如把sysdate改一具體時間,那就在具體時間執行。 具休代碼如下:
    CREATE OR REPLACE PROCEDURE beginmaxpro AS  JOB BINARY_INTEGER;  BEGIN  DBMS_JOB.SUBMIT(JOB,'maxpro;',sysdate,NULL,FALSE);  DBMS_OUTPUT.PUT_LINE('隊列號碼JOB=' JOB);  COMMIT;  end;
4. 代碼執行 4.1. 執行過程
  在CMD行輸入 sqlplus 根據提示登錄  設定DBMS_OUTPUT可見  SQL> set serveroutput ON  以下是執行過程和相應的返回信息  SQL> call beginmaxpro();  隊列號碼JOB=21  調用完成?! QL> call readmaxpro();  maxpro 的當前進行狀態為14  調用完成。  SQL> call readmaxpro();  maxpro 的當前進行狀態為16  調用完成。  SQL> call readmaxpro();  maxpro 的當前進行狀態為23  調用完成?! QL> call readmaxpro();  maxpro 的當前進行狀態為999999  調用完成?! QL> call readmaxpro();  管道中現在沒有信息返回  調用完成?! QL>
4.2. 執行分析 beginmaxpro(),將主處理存儲過程放入隊列的過程,執行后存儲程序馬上返回,maxpro存儲過程放在任務隊列中,并設定為在當前系統時間執行(馬上執行)。 maxpro為主處理存儲過程,開始執行模擬大業務處理,處理過程中將處理進度信息寫入管道。 readmaxpro();為檢查狀態存儲過程,首先讀取信息,假如信息不存在,說明管道內沒有信息可讀而退出;假如存在信息則讀出信息。 本例子可以進行改進,輸出不通過DBMS_OUTPUT.PUT_LINE而是用返回值,那么就可以在前端用ADO調用,發布任務,任務過程中從客戶端讀取進度。代碼如下:
    CREATE OR REPLACE PROCEDURE readmaxpro(p out intergr) AS  n integer;  status integer;  begin  status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);  IF status <> 0 THEN  P:=-1;  return;  END IF;  DBMS_PIPE.UNPACK_MESSAGE(p);  end;


上一篇:Oracle數據庫用VPD來確保信息的隱私

下一篇:實現Oracle數據庫每天異地自動備份

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品av在线播放| 国产精品麻豆va在线播放| wwwwwwww亚洲| 亚洲男人天堂网| 亚洲xxxx视频| 激情亚洲一区二区三区四区| 精品精品国产国产自在线| 久久国产精品亚洲| 欧美极品在线视频| 日韩美女视频免费看| 国产精品国产三级国产专播精品人| 欧美亚洲第一区| 成人黄色大片在线免费观看| 欧美性猛交xxx| 超碰精品一区二区三区乱码| 一区二区三区视频观看| 亚洲美女精品成人在线视频| 91精品国产高清久久久久久久久| 欧美激情国产高清| 精品国产区一区二区三区在线观看| 日韩av最新在线观看| 97色在线播放视频| 国产丝袜精品第一页| 国产精品久久电影观看| 亚洲午夜精品视频| 久久久久久久久国产精品| 欧美在线视频网站| 青青草国产精品一区二区| 欧美日韩视频在线| 国产精品一区二区三区成人| 欧美午夜无遮挡| 精品国产91久久久久久| 在线观看国产欧美| 亚洲四色影视在线观看| 亚洲一区av在线播放| 亚洲少妇中文在线| 91视频8mav| 亚洲高清av在线| 亚洲一区亚洲二区亚洲三区| 亚洲国产私拍精品国模在线观看| 国产综合在线看| 欧美极品在线播放| 91精品国产综合久久香蕉最新版| 亚洲精品成人久久久| 欧美中文字幕精品| 亚洲午夜av电影| 久久精品中文字幕一区| 国产a级全部精品| 久久久之久亚州精品露出| 日韩在线不卡视频| 国模私拍视频一区| 欧美日韩国产丝袜美女| 亚洲成色777777在线观看影院| 成人激情视频在线| 色黄久久久久久| 国产精品久久久久久久久粉嫩av| 国产一区二区丝袜高跟鞋图片| 91高潮在线观看| 国产精品久久久久久超碰| 2019亚洲男人天堂| 国产精品一区二区久久国产| 亚洲天堂色网站| 国产精品高潮视频| 色多多国产成人永久免费网站| 欧美激情网站在线观看| 欧美大片免费观看在线观看网站推荐| 夜夜躁日日躁狠狠久久88av| 国模叶桐国产精品一区| 久久久久久久久电影| 国产精品中文字幕在线观看| 亚洲精品日韩欧美| 日本sm极度另类视频| 国产美女高潮久久白浆| 亚洲性生活视频在线观看| 久久影院资源站| 综合久久五月天| 精品久久中文字幕久久av| 51视频国产精品一区二区| 成人一区二区电影| 精品视频久久久久久| 亚洲免费视频一区二区| 精品久久久久久久久久久久久久| 久久国产一区二区三区| 一本久久综合亚洲鲁鲁| 午夜欧美不卡精品aaaaa| 国产精品99久久久久久白浆小说| 久久久免费高清电视剧观看| 日本欧美一级片| 欧美精品免费看| 国产精品亚洲网站| 中文字幕视频一区二区在线有码| 亚洲精品久久久久久久久| 久久久久久久亚洲精品| 欧美激情一区二区三区成人| 大胆人体色综合| 国产精品久久久av久久久| 91精品国产91久久久久| 国产97在线亚洲| 97视频在线观看免费高清完整版在线观看| 国产精品美女久久| 在线日韩日本国产亚洲| 欧美高清不卡在线| 亚洲影视九九影院在线观看| 亚洲一区av在线播放| 精品中文字幕在线2019| 久久综合久久88| 欧美国产日韩视频| 久久国产精彩视频| 精品少妇一区二区30p| 日韩成人中文电影| 亚洲天堂av在线免费观看| 97国产一区二区精品久久呦| 国产一区二区日韩| 欧洲精品在线视频| 久久精品国产99国产精品澳门| 一本久久综合亚洲鲁鲁| 亚洲人成网站免费播放| 96精品视频在线| 亚洲区中文字幕| 国产欧美精品在线| 欧美电影免费观看高清完整| 欧美猛男性生活免费| 成人精品视频久久久久| 国产精品嫩草影院久久久| 欧美精品少妇videofree| 亚洲天堂影视av| 欧美成人午夜剧场免费观看| 久久乐国产精品| 北条麻妃99精品青青久久| 亚洲国产欧美精品| 亚洲成色www8888| 国产精品视频一| 综合久久五月天| 亚洲另类激情图| 九九视频这里只有精品| 欧美激情乱人伦| 精品性高朝久久久久久久| 狠狠色狠狠色综合日日五| 久久久久久综合网天天| 亚洲精品有码在线| 久久久免费在线观看| 亚洲免费电影一区| 91久久精品国产91久久| 久久色免费在线视频| 欧美专区在线视频| 久久久精品网站| 欧美一区二区视频97| 久久久www成人免费精品| 亚洲跨种族黑人xxx| 日韩的一区二区| 国产午夜精品一区理论片飘花| 亚洲欧洲激情在线| 国产精品日韩在线播放| 隔壁老王国产在线精品| 国产激情久久久久| 51久久精品夜色国产麻豆| 日韩一区二区福利| 亚洲精品wwwww| 日韩中文字幕久久| 欧美日韩在线影院| 超碰91人人草人人干| 亚洲的天堂在线中文字幕| 久久精品国产清自在天天线| 国产精品第1页|