从临时表中选择时找不到数据

问题描述 投票:2回答:1

以下代码块有时会出现“ORA-01403:NO DATA FOUND”错误。在第一个查询中,我检索存储在另一个数据库的表中的数据,并将该数据存储到临时表中。在第二个查询中,我从临时表中选择数据INTO局部变量。我必须这样做,因为其中一个字段是CLOB和it is not possible to select a CLOB into a local variable across a database link

-- insert clob from remote database into temp table across database link
-- it will be deleted upon implicit commit when the report ends;
INSERT INTO  tmp_xml_result
SELECT add_id, site_cd, result_txt
FROM vw_add_result@ADifferentServer
WHERE add_id = p_add_id
    AND site = p_site;

-- now that clob is local, we can select it into a variable
SELECT xml
INTO v_xml
FROM tmp_xml_result
WHERE id = p_add_id
    AND site = p_site;

该块并不总是错误。当它发生错误时,第二个查询将抛出NO DATA FOUND。

如何调整此代码块以使其永远不会导致“ORA-01403:NO DATA FOUND”错误?我知道我可以将块包装在BEGIN / EXCEPTION WHEN NO_DATA_FOUND... / END块中,但理想的解决方案将在临时表可用时返回临时表的内容。

我的环境使用“Oracle Database 11g企业版版本11.2.0.4.0 - 64位生产”。

oracle plsql oracle11g
1个回答
5
投票

插入后检查sql%Rowcount - 如果> 0,则继续,否则执行其他操作。

或者在插入后运行count(*)查询 - 如果为0,则不运行select。 。成。

或者添加一个异常块来捕获ORA-01403。

© www.soinside.com 2019 - 2024. All rights reserved.