WEB开发网
开发学院数据库Oracle Oracle存储过程中任务和管道的应用 阅读

Oracle存储过程中任务和管道的应用

 2007-05-12 12:26:56 来源:WEB开发网   
核心提示: 3.4. 建立读取管道动态了解处理状态的存储过程以下代码是对于maxpro存储过程的状态进行读取的过程,主要使用读取管道的方法,Oracle存储过程中任务和管道的应用(2),注意:status:= DBMS_PIPE.RECEIVE_MESSAGE('maxpro',0);

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;

Tags:Oracle 存储 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接