知识大全 后台运行一个主存储过程,主存储过程通过管道同前端过程通信的例子

Posted 过程

篇首语:地球是有限的,而知识是无限的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 后台运行一个主存储过程,主存储过程通过管道同前端过程通信的例子相关的知识,希望对你有一定的参考价值。

  beginmaxpro为提交主存储过程起动的程序  maxpro 为主存储过程  readmaxpro 为主存佳话  使用ORACLE中的DBMS_PIPE管道能力 注意要明文给于用户 EXECUTE ANY PROCEDURE 权力才可以  在sqlpus用设定  set serveroutput ON 进行测试  通过 @testmaxpro sql 创始程序包  测试过程如下  SQL> call beginmaxpro();  JOB=   调用完成   SQL> call readmaxpro();  maxpro 的当前进行状态为   调用完成   SQL>    */   建立状态表  create table mytest(mystatus integer);  delete from mytest;  INSERT INTO MYTEST(MYSTATUS) VALUES( );  mit;    /   不可重用的存储过程 并且处理过程通过管道给ORACEL内的存储过程通信   使用ORACLE中的DBMS_PIPE管道能力 注意要明文给于用户 EXECUTE ANY PROCEDURE 权力才可以   首先 create table mytest(mystatus integer);   INSERT INTO MYTEST(MYSTATUS) VALUES( );   CREATE OR REPLACE PROCEDURE maxpro(P_NEXTDATE IN OUT DATE) AS  CREATE OR REPLACE PROCEDURE maxpro AS     n integer;    status NUMBER;  BEGIN   取当前状态   SELECT mystatus INTO N FROM MYTEST;   DBMS_OUTPUT PUT_LINE( n= || n);     IF N= THEN   DBMS_OUTPUT PUT_LINE( 过程不可重入 );   RETURN;   END IF;   过程调用lock   UPDATE MYTEST SET MYSTATUS= ;  MIT;   通过DBMS_LOCK SLEEP( ); 模拟大的处理过程 过程处理一段时间后就将一些信息放入管道  FOR N IN LOOP   DBMS_PIPE PURGE( maxpro ); 清除原管道信息   DBMS_PIPE PACK_MESSAGE(N); 把信息放入缓冲区   status:=DBMS_PIPE SEND_MESSAGE( maxpro ); 信息放入管道mypipe 系统等待时间为 秒 最大长度    DBMS_LOCK SLEEP( );   END LOOP;       过程调用unlock   DBMS_PIPE PURGE( maxpro ); 清除原管道信息   DBMS_PIPE PACK_MESSAGE( ); 把信息放入缓冲区 表示过程完成   信息放入管道mypipe 系统等待时间为 秒 最大长度    原长度为 现在设为 是担心长度不足出错   status:=DBMS_PIPE SEND_MESSAGE( maxpro );     UPDATE MYTEST SET MYSTATUS= ;  DBMS_OUTPUT PUT_LINE( 过程处理完成 );  MIT;   P_NEXTDATE:=NULL;  END maxpro;  /    /*  对于maxpro存储过程的状态进行读取的过程 主要使用读取管道的方法  */  CREATE OR REPLACE PROCEDURE readmaxpro AS   n integer;  status integer;  begin     接受等待时间为 秒 可以为 立即调用或DBMS_PIPE RECEIVE_MESSAGE( mypipe ) 等待 天   status:= DBMS_PIPE RECEIVE_MESSAGE( maxpro );   status为 为成功可以UNPACK_MESSAGE 为超时没有数据 为信息太大 为内部错误   IF status <> THEN   SELECT mystatus INTO N FROM MYTEST;   IF N= THEN   DBMS_OUTPUT PUT_LINE( maxpro 过程没有起动 );   ELSE   DBMS_OUTPUT PUT_LINE( maxpro 过程起动 但管道中现在没有信息返回 );   END IF;   return;   END IF;     DBMS_PIPE UNPACK_MESSAGE(n);   DBMS_OUTPUT PUT_LINE( maxpro 的当前进行状态为 || n);  end;     起动maxpro为后台进程的存储过程  /  CREATE OR REPLACE PROCEDURE beginmaxpro AS  JOB BINARY_INTEGER;  BEGIN   DBMS_JOB SUBMIT(JOB maxpro; sysdate sysdate+( /( * * )) TRUE);   DBMS_JOB SUBMIT(JOB maxpro; sysdate sysdate+( /( * * )) );   提交做业 秒后执行 注意设定实例ini文件中的job_queue_interval =    DBMS_JOB SUBMIT(JOB maxpro; sysdate NULL FALSE);   DBMS_JOB SUBMIT(JOB maxpro; sysdate+( /( * * )) NULL FALSE);   DBMS_OUTPUT PUT_LINE( JOB= || JOB);   MIT;  end;    / cha138/Article/program/Oracle/201311/16828

相关参考

知识大全 在ACCESS中调用后台存储过程

在ACCESS中调用后台存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ACCESS是一

知识大全 如何通过hibernate调用存储过程

用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据

知识大全 oracle多条件查询分页存储过程

  项目接近尾声了感觉将业务逻辑放到oracle中使得后台代码很精简oracle很有搞头!  PL\\SQL:  createorreplaceprocedureproc_client_List客户多

知识大全 定时执行存储过程对库表及索引进行分析

  参考了一下别人的代码又补充了一下写了一个存储过程    分析某一用户下面的表及索引    运行完毕后然后设置job即可    createorreplaceprocedureDBA_ANAYZE_

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

计算机控制系统运行过程中,应定期检查和试验的内容有哪些?

计算机控制系统运行过程中,应定期检查和试验的内容有哪些?参考答案:1、操作站、通讯接口、主控制器状态、通讯网络工作状态、系统切换状况、电源主备用工作状态应正常;2、通讯连接处的紧固;3、历史数据存储设

计算机控制系统运行过程中,应定期检查和试验的内容有哪些?

计算机控制系统运行过程中,应定期检查和试验的内容有哪些?参考答案:1、操作站、通讯接口、主控制器状态、通讯网络工作状态、系统切换状况、电源主备用工作状态应正常;2、通讯连接处的紧固;3、历史数据存储设

知识大全 使用存储过程都有哪些益处

  通过把处理封装在容易适应的单元中简化复杂的操作  由于不要求反复建立一系列处理步骤保证了数据的一致性如果所有开发人员和应用程序都使用同一存储过程则所使用的代码都是相同的  这一点的延伸就是防止错误

知识大全 在存储过程中连接远程数据库并进行操作

  我们有时候需要在本地数据库的存储过程中或者在其他SQL语句中要访问一个远程数据库我们可以这样做  在存储过程中连接远程数据库并进行操作  查看远程数据库的相关数据  SERVICE_NAME  两

知识大全 数据库管理中使用存储过程的5个好处

  通过把处理封装在容易适应的单元中简化复杂的操作  由于不要求反复建立一系列处理步骤保证了数据的一致性如果所有开发人员和应用程序都使用同一存储过程则所使用的代码都是相同的  这一点的延伸就是防止错误