Вход/Регистрация
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
вернуться

Борри Хелен

Шрифт:

Другая часть стандарта требует, чтобы вычисляемые столбцы или получаемые из оператора подзапроса были явно поименованы с помощью алиаса. Текущая версия сервера Firebird позволяет вам опускать имя алиаса для вычисляемых столбцов или столбцов, полученных из подзапроса. Для примера следующий запрос

SELECT CAST(CURRENT_DATE as VARCHAR(10)) || '-' || REGISTRATION

FROM AIRCRAFT;

генерирует такой вывод:

<пробельная титульная строка>

===============

2003- 01-01-GORILLA

2004- 02-28-KANGAROO

. . .

Одни рассматривают это как ошибку, другие - как особенность. Для администратора базы данных удобнее быстро создать запрос, не беспокоясь о деталях. Это строго не рекомендуется использовать как "особенность" в приложениях. Выходные столбцы без имени слишком часто приводят к ошибкам и двусмысленностям в клиентских интерфейсах. Те же самые сложности могут появиться в интерфейсах приложений, если вы используете один и тот же алиас более одного раза в одном выходе.

Константы и переменные в качестве вывода времени выполнения

Существует возможность "создавать" выходной столбец в операторе SELECT, используя выражение, в которое включены не столбцы, а константы или контекстные переменные и алиасы. В следующем тривиальном примере запрос добавляет к каждой строке столбец, содержащий константное значение 'This is just a demo':

SELECT

LAST_NAME,

FIRST_NAME,

'This is just a demo' AS DEMO_STRING

FROM MEMBERSHIP;

Тривиальность, как она проявляется в этом примере, может быть удобным способом настройки вывода, особенно при использовании в выражении CASE.

Использование контекстных переменных

Firebird имеет набор переменных, предоставляющих мгновенный снимок значений сервера. Как вы уже видели, многие из этих значений могут быть использованы в выражениях, выполняющих вычисления. Они также могут быть использованы в выражениях, сохраняющих их в столбцах базы данных, или в спецификациях COMPUTED BY (см. разд. "Объявление столбцов COMPUTED BY").

Контекстные переменные также могут быть использованы в выражениях выходного столбца для передачи серверного значения непосредственно клиенту или модулю PSQL. Например:

SELECT

LOG_ID,

L0G_DATE,

. . .

CURRENT_DATE AS BASE_DATE,

СURRENT_TRANSACTION AS BASE_TRANSACTI0N,

. . .

FROM LOG

WHERE . . .

Подробный список доступных переменных и примеры их использования см. в разд. "Контекстные переменные" главы 8.

Выражения, использующие CASE и дружественные функции

Firebird предоставляет из стандарта SQL-99 синтаксис выражения CASE и двух его "сокращенных" производных функций - COALESCE и NULLIF. Выражение CASE может быть использовано для вывода константного значения, условно определенного во время выполнения в соответствии со значением указанного столбца в текущей строке запрашиваемой таблицы.

CASE

Функция CASE позволяет сделать вывод для столбца зависимым от результата вычисления группы взаимоисключающих условий.

Доступность

DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.

Синтаксис

CASE {<значение 1> | <пустое-предложение>}

WHEN {{NULL | <значение 2>} | <предикат-поиска> }

THEN {<результат 1> | NULL }

WHEN...THEN {<результат 2> | NULL}

[WHEN...THEN {<результат N> | NULL}]

[ELSE {<результат (n + 1)> | NULL} ]

END [, ]

Дополнительные ключевые слова

WHEN. . .THEN являются ключевыми словами в каждом предложении условие/результат. Требуется, по меньшей мере, одно предложение условие/результат.

ELSE предшествует необязательному "последнему" результату, который возвращается, если не выполняется ни одно предыдущее предложение.

Аргументы

значение 1 является идентификатором столбца, значение которого вычисляется. Может быть опущен. В этом случае каждое предложение WHEN должно быть предикатом поиска, содержащим идентификатор этого столбца.

  • Читать дальше
  • 1
  • ...
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: