首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle顶点表格形式MRU流程

oracle顶点表格形式MRU流程
EN

Stack Overflow用户
提问于 2016-08-29 20:59:44
回答 1查看 1.5K关注 0票数 1

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

代码语言:javascript
复制
select col1, col2, check_box from view1

用户可以更新表单中的check_box,并且将根据是否选中该check_box来操作col1和col2。然后,基表将由我创建的MRU进程在数据库中更新。

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

例如:

代码语言:javascript
复制
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)?

哪种方法更好?

EN

回答 1

Stack Overflow用户

发布于 2016-08-30 14:09:15

您可以将流程与表格表单相关联。这样做将导致针对表格形式中的每条记录运行该流程(尽管您可以指定执行范围,以便它将针对每一行或仅针对新/更新的行运行)。

在此过程中,您可以使用绑定变量语法引用表格形式中的每一列。如果该列是可更新的,则还可以更改该值。您可以有一个进程,它在MRU之前运行并更改col1和col2的值。

代码语言:javascript
复制
IF :CHECK_COL IS NULL THEN
  :COL1 := NULL;
  :COL2 := NULL;
ELSE
  :COL1 := 'Done';
  :COL2 := 'Done';
END IF;

然后创建一个要在MRU之后运行的进程,并运行该过程。

代码语言:javascript
复制
MY_PROCEDURE(:SOME_COL);

请记住,如果该过程对MRU更改的记录执行DML,则运行此过程将由于丢失更新检测(不匹配的校验和)而导致MRU失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39206966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档