Oracle Pro * C для вставки с запросом подвыборки, вызывающим ORA-01403: данные не найдены

Я использую код C++ со встроенным Pro*C (версия: 11.2.0.3.0) для Oracle DB. Я использую предложение массовой вставки, как показано ниже:

insert int TBL1 (col1, col2) 
select a.col1, b.col2 from TBL2 a, TBL3 b
where a.col1 = :v and a.col2 = b.col2

Я запускаю этот запрос для вставки набора записей и значений привязки для :v на месте.

Однако, в то время как некоторые записи могли быть вставлены, некоторые не удалось с

ORA-01403: no data found

Я вижу из sqlca.sqlerrd[2] количество строк, которые можно было бы вставить. Итак, я знаю, что можно вставить M из N записей. Теперь я хотел бы знать, какие записи потерпели неудачу, поэтому мне нужен список всех значений a.col1, которые могли вызвать эту ошибку. Есть ли выход? Любая подсказка или направление было бы очень полезно.


person Dr. Debasish Jana    schedule 11.08.2015    source источник


Ответы (1)


Это немного долго для комментария.

Ошибка, на которую вы ссылаетесь, является ошибкой PL/SQL, описанной здесь. Это не ошибка, которую обычно вызывает insert.

Я предполагаю, что в таблице есть триггер вставки, и этот триггер вызывает проблему.

Также возможно, что ваш код находится в большем блоке, и что-то еще в этом блоке вызывает ошибку.

person Gordon Linoff    schedule 11.08.2015
comment
Я знаю, что это не проблема вставки, а вызванная подзапросом select, который не смог получить некоторую совпадающую строку для некоторого набора данных, и при попытке вставить через select в вызвал это - person Dr. Debasish Jana; 11.08.2015
comment
insert . . . select не имеет проблем с select, который не возвращает строк. - person Gordon Linoff; 11.08.2015
comment
Я предполагаю, что подзапрос, у которого есть выбор, запускается как переменная выбора в ..., а затем использовал эту переменную для вставки и выбора, в результате чего данные не были найдены - person Dr. Debasish Jana; 11.08.2015
comment
@DebasishJana. . . select into разрешено в подзапросе? - person Gordon Linoff; 11.08.2015
comment
нет, но я полагаю, что меня переводит Pro * C, поскольку у меня возникают проблемы - person Dr. Debasish Jana; 11.08.2015