Предположим, что у меня есть переменная BOOLEAN
в блоке PL/SQL в форме Oracle:
DECLARE
is_viewable BOOLEAN;
BEGIN
is_viewable := ...;
IF NOT is_viewable THEN
raise_my_error(); // pseudo-code
END IF;
END;
После многократного прохождения этого кода отладчиком, я определил, что вызов raise_my_error()
никогда. Чтобы уточнить:
-
raise_my_error()
вызывает не, еслиis_viewable = TRUE
-
raise_my_error()
вызывает не, еслиis_viewable = FALSE
Исходные тесты показывают, что это поведение ограничено выполнением кода PL/SQL в Oracle Forms, а не кодом PL/SQL, запущенным непосредственно в базе данных (хотя я мог ошибаться).
Я могу обойти это, явно сравнивая is_viewable
с FALSE
:
IF is_viewable = FALSE THEN
raise_my_error();
END IF;
Мне все еще интересно, почему NOT is_viewable
никогда не оценивает TRUE
.
Обновление: Похоже, что мой отладчик не показывал правильные значения и этот вопрос больше недействителен. Прошу прощения за эту путаницу.