0

我正在查询 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;

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

4

3 回答 3

0

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

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;
于 2020-12-12T07:22:27.323 回答
0

使用预定义的游标,您将不会被 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;
于 2021-05-06T13:15:21.590 回答
0

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

于 2021-01-11T15:35:25.113 回答