Литерал PL/SQL - это значение, которое не представлено идентификатором, то есть просто значение, которое существует само по себе.
Строковые литералы PL/SQL
Строковый литерал - это текст, заключенный в одинарные кавычки, например:
'What a great language!'
В отличие от идентификаторов, строковые литералы в PL/SQL чувствительны к регистру, то есть следующие два литерала воспринимаются как различные:
'Steven'
'steven'
Так что следующее условие будет вычислено как FALSE:
IF 'Steven' = 'steven'
Числовые литералы PL/SQL
Числовые литералы могут быть целыми или вещественными числами (то есть содержать дробную часть). Имейте в виду, что PL/SQL считает число 154.00 вещественным числом типа NUMBER, несмотря на то, что его дробная часть равна нулю и на самом деле число является целым. Целые и вещественные числа имеют разное внутреннее представление, и преобразование из одних в другие влечет за собой некоторые дополнительные накладные расходы.
Для записи числового литерала также можно использовать экспоненциальный формат. Буква «E» (в верхнем или нижнем регистре) в записи числа означает его умножение на 10 в соответствующей степени, на-пример 3.05E19, 12e-5.
Начиная с версии Oracle Database 10g Release 1 вещественное число может относиться к типу Oracle NUMBER или к стандартному типу IEEE 754 с плавающей точкой. Литералы с плавающей точкой могут иметь двоичное представление с обычной (32 бита, в конце ставится буква «F») или с двойной точностью (64 бита, в конце ставится буква «D»).
В некоторых выражениях можно использовать именованные константы (табл. 1), определенные в стандарте IEEE (Institute of Electrical and Electronics Engineers - Институт инженеров по электротехнике и электронике).
Таблица 1. Именованные константы для BINARY_FLOAT и BINARY DOUBLE
Описание | BIN ARY_FLOAT (32 бита) | BINARY_DOUBLE (64 бита) |
Нечисло («Not a number» - NaN); результат деления на ноль или некорректной операции | BINARY_FLOAT_NAN | BINARY_DOUBLE_NAN |
Положительная бесконечность | BINARY_FLOAT_INFINITY | BINARY_DOUBLE_INFINITY |
Наибольшее конечное число, не превышающее порог переполнения | BINARY_FLOAT_MAX_NORMAL | BINARY_DOUBLE_MAX_NORMAL |
Наименьшее нормальное число; порог потери значимости | BINARY_FLOAT_MIN_NORMAL | BINARY_DOUBLE_MIN_NORMAL |
Наибольшее положительное число, не превышающее порог переполнения | BINARY_FLOAT_MAX_SUBNORMAL | BINARY_DOUBLE_MAX_SUBNORMAL |
Наименьшее число, которое может быть представлено | BINARY_FLOAT_MIN_SUBNORMAL | BINARY_DOUBLE_MIN_SUBNORMAL |
Логические литералы
PL/SQL предлагает два литерала для представления логических (булевых) значений: TRUE и FALSE. Эти значения не являются строковыми, их не следует заключать в кавычки. Используйте логические литералы для присваивания значений логическим переменным, например:
DECLARE enough_money BOOLEAN; -- Объявление логической переменной BEGIN enough_money := FALSE; -- Присваивание ей значения END;
При проверке значения логического выражения не обязательно ссылаться на литерал. Выражение будет «говорить само за себя», как в условии следующего оператора IF:
DECLARE enough_money BOOLEAN; BEGIN IF enough_money THEN
Логическое выражение, переменная или константа также могут принимать значение NULL, что не есть ни TRUE, ни FALSE.