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