Oracle APEX-如何结合“ requet = expression1”和“ exitsits”的服务器端条件SQL查询返回至少一行

问题描述

我想在何时致电验证 查询返回至少一行,例如(从id = 1的表中选择1) 和 当请求“ add_data”被调用

在这里不知道要选择什么:

condition in validation

解决方法

根据我的理解,add_data请求与您按下的按钮有关。如果是这样,那么-如果您什么都不做,则请求名称等于按钮名称-因此,我们假设按钮名称为ADD_DATA。因此:

  • 在“按下按钮时”属性中,选择按钮的名称(ADD_DATA,对吧?)
  • 在“条件类型”中选择您提到的条件(“ SQL查询返回至少一行”)
,

可以通过绑定变量REQUEST访问request的值。要解决您的特定问题,您可以将其添加到“行退回”类型的条件中,如下所示:

   SELECT  1 
    FROM table 
    WHERE (
           id = 1 AND
           :REQUEST = 'add_data'
          )

如果您更喜欢pl / sql,则可以将条件类型为“ PL / SQL Function Body”,其代码如下:

DECLARE
  l_dummy NUMBER;
BEGIN
  -- quit here if request value doesn't match
  IF :REQUEST != 'add_data' THEN
    RETURN false;
  END IF;
  -- check if we have rows in table.
  BEGIN
    SELECT 1
      INTO l_dummy
     WHERE EXISTS (select 1 from table where id = 1) 
  EXCEPTION WHEN NO_DATA_FOUND THEN
    RETURN false;
  END;
  RETURN true;
END;

这是更多代码,但是您会发现它更易于阅读,这对以后的维护很有帮助。