Oracle APEX:查询 APEX_COLLECTION 时未找到数据

Oracle APEX: NO DATA FOUND when querying the APEX_COLLECTION

我正在查询 APEX_COLLECTION 视图以查看记录是否存在,如果不存在,我将收到 NO_DATA_FOUND 异常。为了处理这个问题,我使用了一个匿名块:

BEGIN 

    SELECT c001, c002 INTO l_var1, l_var2
    FROM APEX_COLLECTION
    WHERE collection_name = 'TEST' AND c003='test';
EXCEPTION
WHEN NO_DATA_FOUND
    l_var1 := NULL;
    l_var2 := NULL;
END;

有没有更好的方法来处理这个问题?

如果您只是想查看一条记录是否存在,您可以使用 de COUNT() 函数。这样,就没有必要使用匿名块或NO_DATA_FOUND异常。 COUNT 函数总是 returns 一个值。

SELECT COUNT(*)
INTO l_count
FROM APEX_COLLECTION
WHERE collection_name = 'TEST' AND c003='test';

IF l_count > 0 THEN
  -- Do something, the record exits
ELSE
  -- Do something, the record does not exit
END IF;

除了使用匿名块和捕获 NO_DATA_FOUND 异常之外,没有找到更好的解决方案。

使用预定义游标,您将不会被 NO_DATA_FOUND 异常所困扰。

DECLARE
  cursor c_apex_coll
  is
    SELECT c001, c002
    FROM APEX_COLLECTION
    WHERE collection_name = 'TEST' AND c003='test';
  
  l_var1 varchar2(256);
  l_var2 varchar2(256);
BEGIN
  open c_apex_coll;
  fetch c_apex_coll into l_var1, l_var2;
  close c_apex_coll;
END;