Oracle EBS的FND_CONCURRENT.WAIT_FOR_REQUEST卡住的问题
来源:互联网 发布:征途2挂机网络超时 编辑:程序博客网 时间:2024/06/04 22:47
最近在做一个关于ERP的项目,其中涉及到了物料导入的内容,采用了提交请求(FND_REQUEST.SUBMIT_REQUEST)的方式进行导入。在导入的过程中遇到了一个问题:导入物料基本信息与分类信息是分作两次请求进行提交的,导入分类信息的请求必须是物料基本信息请求提交成功后才提交的,于是就用到了FND_CONCURRENT.WAIT_FOR_REQUEST来等待物料基本信息导入成功后再继续执行后续内容,但是用了这个方法之后就一直卡在这个位置一直不动,下面是具体代码:
DBMS_OUTPUT.PUT_LINE('-----------------提交物料数据请求!----------------');--提交请求V_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST(APPLICATION => 'INV', PROGRAM => 'INCOIN', DESCRIPTION => 'CUX:', START_TIME => SYSDATE, SUB_REQUEST => FALSE, ARGUMENT1 => master_org_id, -- ORGANIZATION ID ARGUMENT2 => 1, -- ALL ORGANIZATIONS ARGUMENT3 => 1, -- VALIDATE ITEMS ARGUMENT4 => 1, -- PROCESS ITEMS ARGUMENT5 => 1, -- DELETE PROCESSED ROWS ARGUMENT6 => P_REQUEST_GRO_ID, -- PROCESS SET (NULL FOR ALL) ARGUMENT7 => 1, -- CREATE OR UPDATE ITEMS ARGUMENT8 => 1 -- GATHER STATISTICS );DBMS_OUTPUT.PUT_LINE('--提交物料数据请求结果:' || V_REQUEST_ID || '--');IF (V_REQUEST_ID <> 0) THENDBMS_OUTPUT.PUT_LINE('-----------------开始更新物料关联数据!----------------');V_FINISHED := FND_CONCURRENT.WAIT_FOR_REQUEST(REQUEST_ID => V_REQUEST_ID,INTERVAL => 5,MAX_WAIT => 0,PHASE => V_PHASE,STATUS => V_STATUS,DEV_PHASE => V_REQUEST_PHASE,DEV_STATUS => V_REQUEST_STATUS,MESSAGE => V_MESSAGE);IF UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL' THENDBMS_OUTPUT.PUT_LINE('-----------------更新物料关联数据!----------------');END IF;END IF;
执行后就一直卡在FND_CONCURRENT.WAIT_FOR_REQUEST这个位置,一直没反应。经过在网上不断的找例子,最终发现在请求提交之后需要COMMIT一下,也就是说在FND_REQUEST.SUBMIT_REQUEST之后需要提交事务,具体的原因我猜测请求提交应该也是向某张表里面插入数据,因此事务没提交的时候,等待的请求是空的,而我又没有设置等待时间,就导致了一直卡在那儿,因此只需要加上COMMIT就好了。
下面是修改后的代码:
DBMS_OUTPUT.PUT_LINE('-----------------提交物料数据请求!----------------');--提交请求V_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST(APPLICATION => 'INV',PROGRAM => 'INCOIN',DESCRIPTION => 'CUX:',START_TIME => SYSDATE,SUB_REQUEST => FALSE,ARGUMENT1 => master_org_id, -- ORGANIZATION IDARGUMENT2 => 1, -- ALL ORGANIZATIONSARGUMENT3 => 1, -- VALIDATE ITEMSARGUMENT4 => 1, -- PROCESS ITEMSARGUMENT5 => 1, -- DELETE PROCESSED ROWS ARGUMENT6 => P_REQUEST_GRO_ID, -- PROCESS SET (NULL FOR ALL) ARGUMENT7 => 1, -- CREATE OR UPDATE ITEMS ARGUMENT8 => 1 -- GATHER STATISTICS);---------------------------------------在这里加上COMMIT语句就可以了COMMIT;DBMS_OUTPUT.PUT_LINE('--提交物料数据请求编号:' || V_REQUEST_ID || '--');IF (V_REQUEST_ID <> 0) THENDBMS_OUTPUT.PUT_LINE('-----------------开始更新物料关联数据!----------------');V_FINISHED := FND_CONCURRENT.WAIT_FOR_REQUEST(REQUEST_ID => V_REQUEST_ID,INTERVAL => 5,MAX_WAIT => 0,PHASE => V_PHASE,STATUS => V_STATUS,DEV_PHASE => V_REQUEST_PHASE,DEV_STATUS => V_REQUEST_STATUS,MESSAGE => V_MESSAGE);IF UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL' THEN DBMS_OUTPUT.PUT_LINE('-----------------更新物料关联数据!----------------'); /*.........*/ END IF;END IF;
阅读全文
1 0
- Oracle EBS的FND_CONCURRENT.WAIT_FOR_REQUEST卡住的问题
- ORACLE ERP中 关于FND_REQUEST.SUBMIT_REQUEST和 FND_CONCURRENT.WAIT_FOR_REQUEST 的介绍与用法
- fnd_concurrent.wait_for_request
- Oracle Form中调用并发请求生成报表并输出为PDF的方法 (FND_CONCURRENT.WAIT_FOR_REQUEST)
- FUNCTION FND_CONCURRENT.WAIT_FOR_REQUEST
- Oracle EBS fnd_request.submit_request 与 Fnd_concurrent.wait_for_ruqest
- wait_for_request的作用
- 关于FND_REQUEST.SUBMIT_REQUEST和 FND_CONCURRENT.WAIT_FOR_REQUEST
- 关于FND_REQUEST.SUBMIT_REQUEST和 FND_CONCURRENT.WAIT_FOR_REQUEST
- 关于FND_REQUEST.SUBMIT_REQUEST和 FND_CONCURRENT.WAIT_FOR_REQUEST
- nfs卡住的问题
- 几个关于Oracle EBS二次开发的问题
- (二)Oracle EBS的问题
- CFtpFileFind FindFile卡住的问题
- 绕过offlieimap卡住的问题
- CFtpFileFind FindFile卡住的问题
- Oracle EBS R12 - adpatch在adutlrcmp.sql卡住,utlrp.sql卡住,shutdown immediate又卡住
- oracle ebs 拆分一列为多行的问题
- java instanceof 与 isInstanceof 的用法
- 双系统下文件互相访问——win7&Linux系统如何互相访问文件
- 《天池》大数据机器学习竞赛-O2O优惠券使用预测
- iTerm 2 && Oh My Zsh【DIY教程——亲身体验过程】
- 硬币问题
- Oracle EBS的FND_CONCURRENT.WAIT_FOR_REQUEST卡住的问题
- 怎样在Ubuntu16.04上安装GTK+-3.0
- CNN大规模视频处理--NoScope: 1000x Faster Deep Learning Queries over Video
- bugly热更新上传补丁失败原因及解决办法
- JavaScript深入理解js闭包
- Javascript常见问题及解决(一)div失去焦点后隐藏
- 搞定这些问题,一个插件就够了!—UWA GOT 功能全剖析
- springMVC初学者可能遇到的版本问题
- LotusScript 调用WSDL 并解析Json字符串