WEB开发网
开发学院数据库Oracle Oracle数据库中存储过程的异步调用 阅读

Oracle数据库中存储过程的异步调用

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

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;

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 数据库 存储

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