Вот пример кода, который я пытаюсь отладить:
BEGIN
OPEN bservice (coservice.prod_id);
FETCH bservice
INTO v_billing_alias_id, v_billing_service_uom_id, v_summary_remarks;
CLOSE bservice;
v_service_found := 1;
-- An empty fetch is expected for some services.
EXCEPTION
WHEN OTHERS THEN
v_service_found := 0;
END;
Когда параметризованный курсор bservice (prod_id) пуст, он выбирает NULL в три переменные и не выдает исключение.
Итак, кто бы ни написал этот код, ожидая, что он выдаст исключение, он ошибался, верно? Кажется, что комментарий подразумевает, что ожидается пустая выборка, а затем он устанавливает флаг для последующей обработки, но я думаю, что этот код также не может быть протестирован с пустыми наборами.
Очевидно, что он должен использовать bservice% NOTFOUND или bservice% FOUND или аналогичный.