Plsql 添加两行的pl/sql代码

Plsql 添加两行的pl/sql代码,plsql,oracle10g,oracleforms,Plsql,Oracle10g,Oracleforms,我不熟悉pl/sql,尤其是oracle表单 这是我的标准(store_A(值)&store_B(值)差值超过4000,然后触发触发器) 例如:store_A=500和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_Al

我不熟悉pl/sql,尤其是oracle表单

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

例如:store_A=500和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;
if:book\u daily\u stats.store\u A>:book\u daily\u stats.store\B和:book\u daily\u stats.store\u A<4000
然后
al_id:=查找警报(“存储警告”)
警报按钮:=显示警报(警报id)
如果ALU按钮=警报按钮1
然后
提出形式(触发)(失效);;
如果结束;
结束;
您(通常)不会“调用”触发器-触发器在满足其触发条件时被触发

例如,表单项上可能有一个“验证项时<代码>触发器”。在该触发器的代码中,可以有如下内容:

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;
if:book\u daily\u stats.store\u A>:book\u daily\u stats.store\B
和:预订每日统计数据。商店A<4000
call_消息(“Store_B的值超出每日限制”);
如果结束;

当验证项时,只要需要验证它所连接的项,就会触发此
触发器。例如,当用户在该项中键入值,然后尝试导航到另一项时(例如,单击另一项或按Tab键)。

您的问题令人困惑。你的第二段开头说标准是store_A>4000;紧跟其后的示例不符合该标准,也不符合不超过4k差异的附加注释,因为差异为4500。很抱歉,忽略此情况(如果store_A>4000,则调用触发器)---请编辑您的问题以澄清它。该代码的问题是,如果Store_B的输入值超过4k,它将触发触发器。我试图实现的是,如果Store_A和Store_B的输入相差超过4k,那么触发器就会被触发。触发器在表单中不是这样工作的。你不能对他们施加条件。相反,只要将IF语句放在触发器中,在条件为true时执行操作。