У меня есть ряд операторов обновления, которые мне нужно использовать в моем пакете Oracle. Редко, но может возникнуть случайная и неизбежная ошибка пользователя, которая приведет к тому, что один из операторов обновления выдаст ошибку «Однострочный запрос -возвращает одну или несколько строк».
Я изучал обработку исключений для oracle PL/SQl, и я немного застрял в том, как и что использовать для перехвата этого исключения, чтобы пакет не аварийно завершился.
Я знаю о существующем предложении исключения «Слишком много строк», созданном до -, но все, что я читал, кажется, говорит, что оно используется для неправильных операторов вставки.
Могу ли я использовать это как исключение? Или мне нужно создать собственное исключение.Я никогда раньше не строил его сам и имею лишь приблизительное представление о том, где разместить все необходимое для этого.
Следующий код в основном показывает, как настраиваются обновления в этой конкретной процедуре. но для краткости я использую только пример того, как это выглядит.
INSERT INTO TempTable... --(Initial insert statement)
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_One))
WHERE T.Row_One is NULL
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_Two))
WHERE T.Row_One is NULL
UPDATE TempTable t SET t.Row_one = (SELECT (Statement_Three))
WHERE T.Row_One is NULL
-- Does the exception clause start here?
EXCEPTION
WHEN TOO_MANY_ROWS THEN
(What do I tell the Procedure to do here, what am I able to tell it to do?)
--end of updates that need the exception handling
-- more insert statements into other tables based on data from the preceding Temp Table
END;
Будет ли это работать или мне нужно создать собственное исключение?
Заранее спасибо.