【问题标题】:pl/sql code adding two rowspl/sql 代码添加两行
【发布时间】:2013-09-01 03:55:06
【问题描述】:

我是 pl/sql 的新手,尤其是 oracle 表单。

这是我的标准(store_A's (value) & store_B's(value) 差值超过 4000 然后触发触发器)

例如:store_A = 500 and store_B = 5000 然后调用触发器(差值不能超过4000)

请帮我修改这段代码:

if :book_daily_stats.store_A > :book_daily_stats.store_B and :book_daily_stats.store_A < 4000
 then
  al_id:= Find_Alert ('Store_Caution')
  al_button:= Show_Alert(al_id)

  if al_button = Alert_Button1
    then
      Raise Form_Trigger_Failure;

  End if;
End;

【问题讨论】:

  • 您的问题令人困惑。您的第二段首先说标准是 store_A > 4000;紧随其后的示例不符合该标准,也不符合差异不超过 4k 的括号注释,因为差异为 4500。
  • 对不起,忽略这个(如果 store_A > 4000 则调用触发器)---
  • 请编辑您的问题以澄清它。

标签: plsql oracle10g oracleforms


【解决方案1】:

您不会(通常)“调用”触发器 - 触发器在满足其触发条件时被触发。

例如,您可能在表单项上有一个when-validate-item 触发器。在该触发器的代码中,您可以使用以下内容:

if :book_daily_stats.store_A > :book_daily_stats.store_B
  and :book_daily_stats.store_A < 4000 then
    call_message (' Store_B''s value exceeded daily limits');
end if;

这个when-validate-item 触发器将在它附加到的项目需要验证时被触发 - 例如。当用户在项目中键入一个值然后尝试导航到另一个项目时(例如,通过单击另一个项目或按 Tab)。

【讨论】:

  • 该代码的问题是如果 Store_B 的输入值大于 4k,它会触发触发器。我想要实现的是,如果 Store_A 和 Store_B 的输入差异超过 4k,那么触发器就会被触发。
  • 这不是触发器在表单中的工作方式。你不能给他们附加条件。相反,如果条件为真,只需将 IF 语句放入触发器中即可执行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多