Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g:基于事件的作业_Oracle11g - Fatal编程技术网

Oracle11g:基于事件的作业

Oracle11g:基于事件的作业,oracle11g,Oracle11g,我有一个存储数据的临时表。当数据输入到应用程序端(JavaEE应用程序)时,我需要轮询事件。一旦数据存储在此临时表中,我需要使用此日期使用proc填充临时表 我尝试使用基于事件的作业。但是没有用。请对此提出一些解决方案。如果我读对了,您有一个表,该表将存储一行,其中包含一个日期,以及一个要根据日期表中输入的数据填充的表 如果使用API将日期表插入,只需在它之后调用您的过程即可。如果你不能做到这一点,你可以使用触发器来做到这一点 乙二醇 因此,每次您在temp_date表中插入行时,您的过程都会被

我有一个存储数据的临时表。当数据输入到应用程序端(JavaEE应用程序)时,我需要轮询事件。一旦数据存储在此临时表中,我需要使用此日期使用proc填充临时表


我尝试使用基于事件的作业。但是没有用。请对此提出一些解决方案。

如果我读对了,您有一个表,该表将存储一行,其中包含一个日期,以及一个要根据日期表中输入的数据填充的表

如果使用API将日期表插入,只需在它之后调用您的过程即可。如果你不能做到这一点,你可以使用触发器来做到这一点

乙二醇

因此,每次您在
temp_date
表中插入行时,您的过程都会被调用。如果需要异步触发该过程,则始终可以为此使用
dbms\u作业

create trigger temp_date_ai 
after insert on temp_date
declare
  v_job number;
begin
  dbms_job.submit(v_job, 'myproc;');
end;
/

因此,当调用方将insert提交到date表中时,您的作业将很快触发(只要您的DBA设置了至少1个
作业队列(job_queue_process
)来处理作业。

Hi DazzaL,正如您所说,您可以使用触发器在插入日期表时使用proc或通过定义作业来填充临时表。当临时表中要填充的数据量很小时,此解决方案是完美的……但在插入日期表时,我需要ll temp表格包含大量数据(约10k+行),涉及复杂的查询(函数)。如果我从Web应用程序端调用触发器,它会像任何事情一样变慢。如果我们在Web应用程序端运行此报表生成查询(不带temp表格),生产服务器关闭…当生成报告时,我们需要传递动态日期参数进行查询。因此,我试图为用户提供一个屏幕,以便在一个临时表中保存日期,在填充临时表时,我需要调用过程填充另一个临时表以用于生成报告(jasper reports).所以需要一些投票来填充日期列,这样我就可以立即调用proc来填充报告温度table@MohanishTimble因此,您可以将作业作为加载表的GUI进程的一部分提交。即与我在触发器示例中所做的相同,但只需将该dbms_job.submit作为填充tem的客户端例程的一部分调用即可这将异步启动作业,因此不会减慢对点击“提交”的人的响应时间。感谢您提供了一个解决方案,我将通过从UI调用作业来检查此问题。并将更新您…@Dazzal:我尝试异步运行作业,但不工作…请检查下面的过程:-创建或替换过程异步运行(p_VARCHAR2中的某些参数,p_jobno out PLS_INTEGER)作为BEGIN dbms_job.submit(p|u jobno,'BEGIN'| | |'Complex|u过程('p| | p|u某些参数| |');'END;');--RETURN p_jobno;END;--------------------------------------------------------------我尝试在Java应用程序端运行作业,它不会让用户等待,但作业也不会运行。。
create trigger temp_date_ai 
after insert on temp_date
declare
  v_job number;
begin
  dbms_job.submit(v_job, 'myproc;');
end;
/