电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:60日期:2023-11-13 14:20:55
1. 前言 在ORACLE數(shù)據(jù)庫實際應用過程中,經(jīng)常把業(yè)務處理邏輯的放在存儲過程,客戶端通過ADO進行調用。有些業(yè)務邏輯處理量大并且復雜,使客戶端調用存儲過程后,長時間沒有反應,也不知存儲過程運行狀態(tài),本文講述如何在ORACLE通過任務和管道的應用,異步調用存儲過程的方法。 2. 基本原理 1.使用DBMS_JOB包將主處理存儲過程作為任務提交到任務隊列中; 2.主處理存儲過程在運行過程中通過DBMS_PIPE包將處理情況放在管道中; 3.監(jiān)控存儲過程讀取管道,從而了解處理情況; 4.本文沒有描述雙向通信的方式,監(jiān)控存儲過程可以通過管道發(fā)送信息給主處理存儲過程。 3. 具體實現(xiàn)測試 建立測試環(huán)境 3.1. 對數(shù)據(jù)庫的ini進行相關修改,使系統(tǒng)的任務隊列功能打開 對于Oracle9I,只需修設定數(shù)據(jù)庫的INI內(nèi)的'JOB_QUEUE_PROCESSES=非0值',如 'JOB_QUEUE_PROCESSES=10',對于ORACLE8I除設定實例ini文件中的'JOB_QUEUE_PROCESSES=非0值'外,還需設定'job_queue_interval=1'。 3.2. 設用用戶權限 由于使用ORACLE中特定的程序包,所以要注重要明文給于用戶系統(tǒng)權限。對當前用戶(測試用戶),賦于以下權力: EXECUTE DBMS_PIPEEXECUTE DBMS_LOCKEXECUTE DBMS_JOB3.3. 建立模擬大業(yè)務處理存儲過程 本存儲過程通過循環(huán)30次,調用DBMS_LOCK.SLEEP(1)(體眠1秒)和寫管道模擬大的處理過程。 具體代碼如下: CREATE OR REPLACE PROCEDURE maXPro ASn integer;status NUMBER;BEGINFOR N IN 1..30 LOOPDBMS_PIPE.PURGE('maxpro'); --清除原管道信息DBMS_PIPE.PACK_MESSAGE(N); --把信息放入緩沖區(qū)status:=DBMS_PIPE.SEND_MESSAGE('maxpro');DBMS_LOCK.SLEEP(1);END LOOP;DBMS_PIPE.PURGE('maxpro'); --清除原管道信息DBMS_PIPE.PACK_MESSAGE(999999); --把信息放入緩沖區(qū),用999999 表示過程完成status:=DBMS_PIPE.SEND_MESSAGE('maxpro');END maxpro;3.4. 建立讀取管道動態(tài)了解處理狀態(tài)的存儲過程 以下代碼是對于maxpro存儲過程的狀態(tài)進行讀取的過程,主要使用讀取管道的方法,注重: status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);中的'0'參數(shù)是很要害的,說明接受等待時間為0秒,表示,調用時假如沒有信息不等待直接返回。 具體代碼如下: CREATE OR REPLACE PROCEDURE readmaxpro ASn integer;status integer;begin--接受等待時間為1秒,可以為0,立即調用或 DBMS_PIPE.RECEIVE_MESSAGE('mypipe') 等待100天status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);--status為0為成功可以UNPACK_MESSAGE,1為超時沒有數(shù)據(jù), 2為信息太大,3為內(nèi)部錯誤IF status <> 0 THENDBMS_OUTPUT.PUT_LINE('管道中現(xiàn)在沒有信息返回');return;END IF;DBMS_PIPE.UNPACK_MESSAGE(n);DBMS_OUTPUT.PUT_LINE('maxpro 的當前進行狀態(tài)為' n);end;3.5. -起動模擬大業(yè)務處理存儲過程為后臺進程的存儲過程(BEGINMAXPRO) 通過DBMS_JOB.SUBMIT(JOB,'maxpro;',sysdate,NULL,FALSE);使'maxpro'為一個任務,在當前時間(sysdate)后執(zhí)行,當然假如把sysdate改一具體時間,那就在具體時間執(zhí)行。 具休代碼如下: CREATE OR REPLACE PROCEDURE beginmaxpro ASJOB BINARY_INTEGER;BEGINDBMS_JOB.SUBMIT(JOB,'maxpro;',sysdate,NULL,FALSE);DBMS_OUTPUT.PUT_LINE('隊列號碼JOB=' JOB);COMMIT;end;4. 代碼執(zhí)行 4.1. 執(zhí)行過程 在CMD行輸入 sqlplus 根據(jù)提示登錄設定DBMS_OUTPUT可見SQL> set serveroutput ON以下是執(zhí)行過程和相應的返回信息SQL> call beginmaxpro();隊列號碼JOB=21調用完成。SQL> call readmaxpro();maxpro 的當前進行狀態(tài)為14調用完成。SQL> call readmaxpro();maxpro 的當前進行狀態(tài)為16調用完成。SQL> call readmaxpro();maxpro 的當前進行狀態(tài)為23調用完成。SQL> call readmaxpro();maxpro 的當前進行狀態(tài)為999999調用完成。SQL> call readmaxpro();管道中現(xiàn)在沒有信息返回調用完成。SQL>4.2. 執(zhí)行分析 beginmaxpro(),將主處理存儲過程放入隊列的過程,執(zhí)行后存儲程序馬上返回,maxpro存儲過程放在任務隊列中,并設定為在當前系統(tǒng)時間執(zhí)行(馬上執(zhí)行)。 maxpro為主處理存儲過程,開始執(zhí)行模擬大業(yè)務處理,處理過程中將處理進度信息寫入管道。 readmaxpro();為檢查狀態(tài)存儲過程,首先讀取信息,假如信息不存在,說明管道內(nèi)沒有信息可讀而退出;假如存在信息則讀出信息。 本例子可以進行改進,輸出不通過DBMS_OUTPUT.PUT_LINE而是用返回值,那么就可以在前端用ADO調用,發(fā)布任務,任務過程中從客戶端讀取進度。代碼如下: CREATE OR REPLACE PROCEDURE readmaxpro(p out intergr) ASn integer;status integer;beginstatus:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);IF status <> 0 THENP:=-1;return;END IF;DBMS_PIPE.UNPACK_MESSAGE(p);end;
主站蜘蛛池模板: 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 拖链电缆_柔性电缆_伺服电缆_坦克链电缆-深圳市顺电工业电缆有限公司 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 脉冲除尘器,除尘器厂家-淄博机械| 铣床|万能铣床|立式铣床|数控铣床|山东滕州万友机床有限公司 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 泰安塞纳春天装饰公司【网站】 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 威客电竞(vk·game)·电子竞技赛事官网| 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 礼堂椅厂家|佛山市艺典家具有限公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 |