在不等待过程完成的情况下从PHP调用Oracle存储过程
PHP5.2.5-Oracle 11在不等待过程完成的情况下从PHP调用Oracle存储过程,php,sql,oracle,stored-procedures,Php,Sql,Oracle,Stored Procedures,PHP5.2.5-Oracle 11 我有一个PHP网页,它启动了一个Oracle存储过程。这个过程需要几分钟才能运行,我希望通过检查数据库中的当前值来显示进程的当前状态,并在网页每隔几秒钟刷新时显示它们。存储过程运行正常,但oci_execute似乎必须等待结果,然后PHP脚本才能继续。有没有一种方法可以启动此存储过程,而oci_execute不必等待结果?您的PHP脚本可以生成一个作业,使用dbms_作业或dbms_调度程序包在单独的会话中运行该过程 DECLARE l_jobno pl
我有一个PHP网页,它启动了一个Oracle存储过程。这个过程需要几分钟才能运行,我希望通过检查数据库中的当前值来显示进程的当前状态,并在网页每隔几秒钟刷新时显示它们。存储过程运行正常,但oci_execute似乎必须等待结果,然后PHP脚本才能继续。有没有一种方法可以启动此存储过程,而oci_execute不必等待结果?您的PHP脚本可以生成一个作业,使用
dbms_作业
或dbms_调度程序
包在单独的会话中运行该过程
DECLARE
l_jobno pls_integer;
BEGIN
dbms_job.submit( l_jobno,
'BEGIN <<your procedure call>> END;',
sysdate + interval '1' second );
commit;
END;
声明
l_作业编号pls_整数;
开始
dbms_作业。提交(l_作业编号,
“开始-结束;”,
系统日期+间隔“1”秒);
犯罪
结束;
这将在提交作业后立即返回。过程将无法看到会话中所做的任何未提交的更改,会话也无法看到过程所做的任何未提交的更改。这可能需要做更多的工作,以确保在正确使用事务的同时可以监控过程的执行。这听起来很有希望。我会查一下,但你能告诉我这个吗;我目前正在向存储过程传递参数。是否有向dbms_作业发送参数的机制?@Jeff-使用
dbms_作业
,您需要将参数放入作为第二个参数传递的字符串中,即“BEGIN procedure_name(“”“| | |某些|字符串|参数|“”);结束;'代码>。如果使用dbms\u调度程序定义作业
,则可以使用参数定义作业,然后在执行作业之前设置参数。