oracle peoplesoft中的应用程序引擎消息日志操作

bihw5rsg  于 2022-11-28  发布在  Oracle
关注(0)|答案(1)|浏览(189)

我正在PeopleSoft中开发一个新的自定义应用程序引擎,必须在PS_JRNL_LN记录中更新Bussiness_unit_pc。我已经完成了该引擎,它运行正常。但要求我的经理更改应用程序引擎的消息日志。我必须打印已更新业务单位pc Journal_id的计数。我已将%AESECTION、%AESTEP、%SQLROWS、PS_JRNL_LN %结合(PROJECT_ID)消息日志参数中的这些元SQL,消息集为18030,消息编号为3。我已附加了一张输出消息日志的图片。输出结果显示,好像为一个journal_id更新了32行,它被打印了32次journal_id。但要求是我必须显示为特定的Journal_id更新了多少行。我已经在这个消息日志操作上工作了3天。有人能帮忙吗?
谢谢你Balu
我必须在消息日志中显示为特定Journal_i更新了多少行。我不想打印32次journal_id。有关详细说明,请参见图像
谢谢你,Balu

hmae6n7t

hmae6n7t1#

来自评论的信息:
执行选择操作:

%SelectInit(JOURNAL_ID, PROJECT_ID, JOURNAL_DATE, BUSINESS_UNIT_PC,
 LASTUPDOPRID, DTTM_STAMP) 
SELECT A.JOURNAL_ID, A.PROJECT_ID, A.JOURNAL_DATE, A.BUSINESS_UNIT_PC,
 %OperatorId, %CurrentDateTimeIn 
FROM PS_JRNL_LN A 
WHERE A.PROJECT_ID<> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_DATE BETWEEN %Bind(START_DATE) AND %Bind(END_DATE)

SQL操作

UPDATE PS_JRNL_LN A 
SET A.BUSINESS_UNIT_PC = A.BUSINESS_UNIT,
 A.PROCESS_INSTANCE=%Bind(DCP_RUN_UPD_AET.PROCESS_INSTANCE) 
WHERE A.PROJECT_ID <> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_ID = %Bind(DCP_RUN_UPD_AET.JOURNAL_ID)
 AND A.JOURNAL_DATE =%Bind(DCP_RUN_UPD_AET.JOURNAL_DATE)

问题是Do Select动作是一个循环,会对每一列执行后续的SQL动作,而您的select陈述式不会传回不同的列,因为并未使用所有的索引键。您可以更新select陈述式,指定所有的索引键。
更简单的解决方案可能是完全删除Do Select操作,并将SQL操作更新为以下内容:

UPDATE PS_JRNL_LN A 
SET A.BUSINESS_UNIT_PC = A.BUSINESS_UNIT,
 A.PROCESS_INSTANCE=%Bind(DCP_RUN_UPD_AET.PROCESS_INSTANCE) 
WHERE A.PROJECT_ID <> ' ' AND A.BUSINESS_UNIT_PC=' ' 
 AND A.JOURNAL_DATE BETWEEN %Bind(START_DATE) AND %Bind(END_DATE)

相关问题