我有一个基于简单sql的表格表单,比如
select col1, col2, check_box from view1用户可以更新表单中的check_box,并且将根据是否选中该check_box来操作col1和col2。然后,基表将由我创建的MRU进程在数据库中更新。
我遇到的问题是,除了使用MRU更新基表之外,我还想在表单中调用另一个进程来执行基于check_box的其他操作。
例如:
if check_box is unchecked, then col1 and col2 will be blanked by the MRU;
if check_box is checked, col1 and col2 will be updated to 'Done' by the MRU,
also a proc should be called to do something else.我的问题是,我应该坚持MRU方法(因为MRU有它的优点,包括丢失更新检测,锁定等),并创建一个单独的进程来调用proc,或者我应该只创建一个同时执行这两个任务的进程(比如循环遍历报告的每一行,更新基表,当检查到check_box时,调用proc)?
哪种方法更好?
发布于 2016-08-30 14:09:15
您可以将流程与表格表单相关联。这样做将导致针对表格形式中的每条记录运行该流程(尽管您可以指定执行范围,以便它将针对每一行或仅针对新/更新的行运行)。
在此过程中,您可以使用绑定变量语法引用表格形式中的每一列。如果该列是可更新的,则还可以更改该值。您可以有一个进程,它在MRU之前运行并更改col1和col2的值。
IF :CHECK_COL IS NULL THEN
:COL1 := NULL;
:COL2 := NULL;
ELSE
:COL1 := 'Done';
:COL2 := 'Done';
END IF;然后创建一个要在MRU之后运行的进程,并运行该过程。
MY_PROCEDURE(:SOME_COL);请记住,如果该过程对MRU更改的记录执行DML,则运行此过程将由于丢失更新检测(不匹配的校验和)而导致MRU失败。
https://stackoverflow.com/questions/39206966
复制相似问题