首页 > 解决方案 > Oracle APEX - 如何结合“requet = expression1”和“exisits”的服务器端条件(sql查询至少返回一行)

问题描述

我想在查询返回至少一行时调用验证(从 id = 1 的表中选择 1)以及调用请求“add_data”时

不知道在这里选择什么:

验证条件

标签: oracleplsqloracle-apexoracle-apex-5.1

解决方案


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

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

如果您更喜欢 pl/sql,您可以使用条件类型“PL/SQL 函数体”,代码如下:

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;

这是更多的代码,但您会发现它更易于阅读,这可能是以后维护的一个优势。


推荐阅读