Oracle apex 如果用户试图保存我的表中已存在的值(用于基于Oracle Apex表单的应用程序),如何显示警报

Oracle apex 如果用户试图保存我的表中已存在的值(用于基于Oracle Apex表单的应用程序),如何显示警报,oracle-apex,oracle-apex-5,oracle-apex-5.1,Oracle Apex,Oracle Apex 5,Oracle Apex 5.1,我在基于Oracle APEX的应用程序中有一个表单,我希望在提交按钮上进行验证,以便两个特定条目的组合(如果它们已经存在于SQL表/视图中)显示一个警报,如“a和B的值组合的条目已经存在,请输入正确的值。”如果这两个特定条目由两个表单项表示(例如:P1\u ONE和:P2\u two),则验证过程可能是一个返回错误文本的函数,例如 declare l_cnt number; retval varchar2(200); begin select count(*) into l

我在基于Oracle APEX的应用程序中有一个表单,我希望在提交按钮上进行验证,以便两个特定条目的组合(如果它们已经存在于SQL表/视图中)显示一个警报,如“a和B的值组合的条目已经存在,请输入正确的值。”

如果这两个特定条目由两个表单项表示(例如
:P1\u ONE
:P2\u two
),则验证过程可能是一个返回错误文本的函数,例如

declare
  l_cnt number;
  retval varchar2(200);
begin
  select count(*)
    into l_cnt
    from your_table t
    where t.column_one = :P1_ONE
      and t.column_two = :P1_TWO;

  if l_cnt > 0 then 
     retval := 'The entry for this combination already exists';
  end if;
end;
查询本身可能需要修改,这取决于您描述问题的确切含义;这就是我的理解。

如果这两个特定条目由两个表单项表示(例如
:P1\u ONE
:P2\u two
),那么验证过程可能是一个返回错误文本的函数,例如

declare
  l_cnt number;
  retval varchar2(200);
begin
  select count(*)
    into l_cnt
    from your_table t
    where t.column_one = :P1_ONE
      and t.column_two = :P1_TWO;

  if l_cnt > 0 then 
     retval := 'The entry for this combination already exists';
  end if;
end;

查询本身可能需要修改,这取决于您描述问题的确切含义;这就是我理解它的方式。

那么您应该在表上有一个唯一的约束,并让它验证传入的数据


任何违反此约束的行为都会引发异常,异常可以在中进行转换。

那么您应该在表上有一个唯一的约束,并让它验证传入的数据


任何违反此约束的行为都会引发异常,可以在中进行转换。

对于类似的查询,我建议使用“存在时从双精度计数”我使用此方法,它对我有效,在我的页面上创建了一个类型为“PL/SQL函数体(返回布尔)”的验证,并使用了很少修改的查询版本,我没有设置retval,而是在条件与else TRUE匹配时返回FALSE。然后我们可以在“错误消息”部分给出任何需要的错误消息。好的,如果这个想法有帮助,我很高兴。现在有一个新问题,这个验证在创建一个新条目时工作得很好,但是当我尝试更新现有值时,验证也会触发并阻止我保存现有表条目中的任何更新。对于新条目和更新旧条目,表单页面是相同的。有什么建议吗?您可以设置一个条件,说明何时运行验证。例如,您可以将其设置为在按下按钮时运行(并将其设置为,例如,创建按钮,这意味着当您按下保存(“应用更改”,即更新)时它不会运行)。若它应该为多个按钮运行,那个么使用请求包含在值条件中。按钮的名称等于它的请求名称,因此您可以命名所有要为其运行验证的按钮。对于类似的查询,我建议使用“存在时从双精度计数”我使用此方法,它对我有效,在我的页面上创建了一个验证,类型为“PL/SQL函数体(返回布尔值)”,并使用很少修改的查询版本,而不是设置retval,如果条件与else TRUE匹配,则返回FALSE。然后我们可以在“错误消息”部分给出任何需要的错误消息。好的,如果这个想法有帮助,我很高兴。现在有一个新问题,这个验证在创建一个新条目时工作得很好,但是当我尝试更新现有值时,验证也会触发并阻止我保存现有表条目中的任何更新。对于新条目和更新旧条目,表单页面是相同的。有什么建议吗?您可以设置一个条件,说明何时运行验证。例如,您可以将其设置为在按下按钮时运行(并将其设置为,例如,创建按钮,这意味着当您按下保存(“应用更改”,即更新)时它不会运行)。若它应该为多个按钮运行,那个么使用请求包含在值条件中。按钮的名称等于其请求名称,因此您可以命名要运行验证的所有按钮。感谢Scott提供的提示帮助,所有与APEX相关的查询都会在您的帮助下进行。非常感谢。感谢Scott的及时帮助,我所有与APEX相关的问题都会在您的帮助下解决。非常感谢。