В следующем блоке кода будет иногда ошибка с "ORA-01403: NO DATA FOUND". В первом запросе я извлекаю данные, хранящиеся в таблице другой базы данных, и сохраняю эти данные во временной таблице. Во втором запросе я выбираю данные из временной таблицы INTO локальной переменной. Я должен сделать это, потому что одно из полей является CLOB и невозможно выбрать CLOB в локальной переменной по ссылке в базе данных .
-- 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 Enterprise Edition, выпуск 11.2.0.4.0 - 64-битная версия».