oracle apex表格形式MRU流程

时间:2016-08-29 12:59:44

标签: oracle plsql report oracle-apex

我有一个基于简单sql的表格形式,如

select col1, col2, check_box from view1

用户可以更新表单中的check_box,并且将根据是否选中check_box来操纵col1和col2。然后,我将通过我创建的MRU流程在DB中更新基表。

我遇到的问题是,除了使用MRU更新基表之外,我还想调用另一个proc来执行基于check_box的其他操作

e.g。

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)?

什么是更好的apporach?

1 个答案:

答案 0 :(得分:1)

您可以将流程与表格形式相关联。执行此操作将导致以表格形式为每个记录运行进程(尽管您可以指定执行范围,以便它将针对每一行运行或仅针对新的/更新的行运行)。 在此过程中,您可以使用绑定变量语法引用表格形式中的每一列。如果列是可更新的,您还可以更改该值。 您可以在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因更新检测丢失而失败(不匹配的校验和)。