Тип данных BOOLEAN в PL/SQL

Doc

Doc

АйТишник со стажем... Профиль автора.

Тип BOOLEAN языка PL/SQL OracleЛогические значения и переменные чрезвычайно удобны. Так как логические переменные в PL/SQL могут принимать только три значения: TRUE, FALSE и NULL, их использование проясняет смысл программного кода. Сложное логическое выражение с множеством разных переменных заменяется одной логической переменной, имя которой напрямую выражает смысл выражения.

Приведем пример команды IF с использованием логической переменной (или функции — только по этому короткому фрагменту трудно различить их):

IF report_requested
THEN
   print_report (report_id);
END IF;

Программная логика данного фрагмента не только делает его чуть более самодокументированным, но и способствует его защите от будущих изменений. Рассмотрим, к примеру, код реализации пользовательского интерфейса, который может предшествовать этой команде. Как программа определяет, нужно ли пользователю печатать отчет? Возможно, она выводит окно запроса с вариантами ответов «Да» и «Нет» или предлагает установить флажок или выбрать в списке нужный вариант. Для приведенного кода это не имеет значения. Код реализации можно изменить в любой момент; если интерфейс будет правильно присваивать значение логической переменной report_requested, это не повлияет на работоспособность программы.

Логический тип данных поддерживается в языке PL/SQL, но не в базе данных Oracle. В PL/SQL можно создать логическую переменную и работать с ней, но создать таблицу с логическими столбцами вам не удастся.

Тот факт, что логическая переменная может принимать и значение NULL, отражается на структуре команды IF...THEN...ELSE. Для примера сравните две следующие команды:

IF report_requested
THEN
   NULL; -- Выполняется, если report_requested = TRUE
ELSE
   NULL; -- Выполняется, если report_requested = FALSE или IS NULL
END IF;
IF NOT report_requested
THEN
   NULL; -- Выполняется, если report_requested = FALSE
ELSE
   NULL; -- Выполняется, если report_requeste = TRUE or IS NULL
END IF;

Если всем трем возможным значениям переменной должны соответствовать разные действия, используйте каскадную команду IF:

IF report_requested
THEN
   NULL; -- Выполняется, если report_requested = TRUE
ELSIF NOT report_requested
THEN
   NULL; -- Выполняется, если report_requested = FALSE
ELSE
   NULL; -- Выполняется, если report_requested IS NULL
END IF; 

Подробнее о значениях NULL в командах IF рассказывается в этом блоге.

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4651 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14849 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 12352 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Символьные функции и аргументы...
Символьные функции и аргументы... 18588 просмотров Анатолий Wed, 23 May 2018, 18:54:01
Войдите чтобы комментировать