【问题标题】:Access "Page Items to Submit" values inside a trigger in oracle apex在 oracle apex 的触发器中访问“要提交的页面项目”值
【发布时间】:2020-06-23 04:43:57
【问题描述】:

我想从不在相关数据表中的触发器访问额外的页面项目值。例如,我有一个如下表,

      Employee
----------------------

empId | fName | lName 
----------------------
1     | John  | Doe
----------------------
2     | Jane  | Doe 

Apex 表单项会像,

P500_EMPID, P500_FNAME, P500_LNAME

我有一个名为P500_SOMEIDS的额外页面项目,它是一个多选列表。我想访问Employee 表的After Insert 触发器中的那些选定值。我尝试将此项目添加到“要提交的页面项目”中。但我不知道如何在该触发器中访问它。是否可以..?以及如何..?

【问题讨论】:

  • 如何在员工表中插入数据。您使用的是顶点表单区域吗?
  • 是的。插入由顶点表单处理的数据。

标签: oracle triggers oracle-apex apex-trigger oracle-apex-19.2


【解决方案1】:

在处理您的表更新的页面进程中(这将是“表单 - 自动行处理 (DML)”类型的进程,在“设置”下有一个属性“插入后返回主键”。如果设置为“On”,则插入语句会将插入行的值返回到定义为主键的页面项中。 示例:

  • 在 emp 上创建表单
  • 将 P1_EMPNO 设为主键页面项
  • 假设你新建了一行,empno的值为1000,那么在运行自动行处理页面流程后,P1_EMPNO的值设置为1000。

如果您想将行插入到引用新创建的 empno 的另一个表中,那么您可以创建一个 pl/sql 类型代码的页面进程(在行处理之后执行),如下所示:

BEGIN
  INSERT INTO some_other_table (empno) VALUES (:P1_EMPNO); 
END;

应尽可能避免将触发器用于业务功能。

【讨论】:

  • 感谢科恩的回答。我在问题中提到的页面项目是多选页面项目。所以它返回像“1”、“3”、“5”这样的数据集。我想将这些数字放在 IN () 中,并用逗号分隔,并且作为数字而不是字符串。你能帮我解决这个问题吗?
  • 这完全是一个不同的问题。可以发一个新的吗?
【解决方案2】:

使用将执行相同工作的存储过程代替数据库触发器。传递任意数量的参数(包括P500_SOMEIDS 项)。

【讨论】:

  • 感谢您的回答。你能告诉我如何访问该项目..?
  • 我使用了触发器,因为我想将数据插入到另一个带有插入 id 的表中。插入触发器之后。
  • 不要使用触发器。使用存储过程并在提交后从您的顶点页面中的页面进程调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多