Выражения PL/SQL используются в качестве значений выражения поэтому использование выражения как самостоятельного оператора бессмысленно — оно должно быть элементом оператора. Например, выражение может находиться в правой части операции присваивания или быть элементом SQL-оператора. Тип выражения определяют составляющие его операции и типы операндов.
Операнд — это аргумент операции. В операциях PL/SQL используется либо один аргумент (унарная, или одноместная, операция), либо два аргумента (бинарная, или двухместная, операция). Например, операция отрицания (-) является унарной, а операция умножения (*) — бинарной.
Приоритет операций выражения определяет порядок их выполнения. Рассмотрим числовое выражение:
Приоритет операции умножения выше приоритета операции сложения, поэтому результатом этого выражения будет 38 (3+35), а не 56 (8*7). Чтобы изменить порядок вычисления выражения, заданный по умолчанию, следует использовать круглые скобки. Например, результатом приведенного ниже выражения будет 56:
Символьные выражения
Существует лишь одна символьная операция — операция конкатенации, или сцепления (| |). С ее помощью соединяются две или большее количество символьных строк (или аргументов, которые могут быть неявно преобразованы в символьные строки). Например, результатом выражения
Если все операнды в выражении конкатенации имеют тип CHAR, то и
оно само будет иметь тип CHAR. Если же хотя бы один операнд имеет
тип выражение будет иметь тип Считается, что
оно само будет иметь тип CHAR. Если же хотя бы один операнд имеет
тип выражение будет иметь тип Считается, что
строковые литералы имеют тип CHAR, поэтому результатом предыдущего примера является значение типа CHAR. Однако в следующем блоке переменной v_Result присваивается выражение, результат которого -значение типа
Логические выражения
Во всех управляющих структурах PL/SQL (за исключением GOTO) используются логические выражения, называемые также условиями. Логическое, или булево, выражение — это любое выражение, которое дает в результате логическое значение (TRUE (истина), FALSE (ложь) или NULL). Ниже приведен ряд логических выражений:
В трех операциях — AND (и), OR (или) и NOT (не) — логические значения используются в качестве аргументов и возвращаются в качестве результата. Возможные комбинации описываются в таблицах истинности
Рис. З.5. Таблицы истинности
(см. рис. 3.5). С помощью этих операций реализуется стандартная трехзначная логика. AND возвращает TRUE только в том случае, если истинны оба операнда, OR возвращает FALSE только тогда, когда оба операнда ложны.
NULL-значения усложняют логические выражения (напомним, что NULL — это пропущенное или неизвестное значение). Результатом выражения
является NULL, так как неизвестно, истинен ли второй операнд. Более подробно об этом рассказывается ниже в разделе "NULL-условия".
В операциях сравнения, или отношения, в качестве операндов используются числа, символы или данные, а возвращаются логические значения. Ниже приведена таблица, описывающая эти операции.
Операция Описание
Равно (равенство)
Не равно (неравенство)
< Меньше
> Больше
Меньше или равно
>= Больше или равно
Оператор IS NULL возвращает значение TRUE только тогда, когда операндом является NULL. NULL-значения не могут быть проверены на истинность при помощи операций отношения, так как любое выражение отношения, операндом которого является NULL, возвращает NULL.
Оператор LIKE (подобие) применяется для сопоставления строк символов с некоторым образцом, подобно тому, как это делается в регулярных выражениях системы Unix. Знак подчеркивания (_) соответствует одному символу, а знак процента (%) — нулю и более символам. Приведенные ниже выражения возвращают TRUE:
А это выражение возвращает TRUE:
Оператор BETWEEN (между) объединяет операции <= и >= в одном выражении. Например, приведенное ниже выражение возвращает значение FALSE:
Оператор IN (в) возвращает TRUE, если первый операнд содержится
в наборе, определяемом вторым операндом. Например, результат этого
выражения — FALSE:
Если в наборе содержатся NULL-значения, они игнорируются, так как при сравнении некоторого значения с NULL всегда будет возвращаться NULL.
< Предыдущая | Следующая > |
---|