НЕТ НАЙДЕННЫХ ДАННЫХ при выборе из временной таблицы - PullRequest
0 голосов
/ 05 сентября 2018

В следующем блоке кода будет иногда ошибка с "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-битная версия».

1 Ответ

0 голосов
/ 05 сентября 2018

Проверьте sql% Rowcount после вставки - если оно> 0, затем продолжите, в противном случае сделайте что-нибудь еще.

Или запустите запрос count (*) после вставки - если он равен 0, не запускайте ваш выбор. , в.

Или добавьте блок исключений, чтобы поймать ORA-01403.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...