我有一个包,我在调用一个过程来向表中插入记录,我使用sys.DBMS_LOCK.sleep (<>);
我遇到的问题是来自应用程序的调用表单仍处于打开状态,直到插入完成。
如何确保当我提交页面和页面关闭时,插入应该在后端发生某种异步调用。在数据库程序中是否有任何异步关键字来进行这种活动?
由于
更新
putData(empNo,EmpName);
sys.DBMS_LOCK.sleep (<>);
putData(empNo,EmpName);
由于上述原因,我的页面一直保持到第二个程序结束。我想在第一个程序完成或用户提交页面时立即关闭页面。
更新2
DBMS_JOB.SUBMIT(ln_dummy, 'begin putData('||empNo,EmpName||'); end;');
给我编译错误错误的参数数量调用Submit。
我该如何解决这个问题?
答案 0 :(得分:5)
你的PutData()程序需要两个参数。你可能认为你传递了两个参数,但事实并非如此。此外,如果EmpName是一个字符串 - 似乎很可能 - 你需要将它包装在转义引号中。基本上你在这里编写动态SQL,这总是很棘手。
试试这个:
DBMS_JOB.SUBMIT(ln_dummy, 'begin putData('||empNo||','''||EmpName||'''); end;');
“其他问题是如何以10的间隔运行这些作业 分“
SUBMIT()可以采用INTERVAL参数。它位于DBMS_JOB的文档中。 Find out more
但是,如果您希望每个iterationn使用不同的参数值,您可能需要重新考虑您的应用程序设计。您应该有一个过程来轮询表中要处理的值。
或使用队列。这取决于你真正想要实现的目标。