Чтение онлайн

ЖАНРЫ

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

ALTER TABLE MEMBERSHIP

ADD CONSTRAINT CHECK_CELLPHONE _NO

CHECK (CELLPHONE_NO IS NULL OR CELLPHONE_NO STARTING WITH '0');

Выражения в PSQL

Процедурный язык для триггеров и хранимых процедур PSQL широко использует выражения для управления потоком выполнения. PSQL предоставляет структуры IF(<предикат>) THEN и WHILE(<предикат>) DO. Любой предикат, который может быть использован в условии поиска, также может быть предикатом для условия управления потоком в программе.

Важной функцией триггеров является проверка с использованием выражений поступающих новых

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

CREATE TRIGGER BI_MEMBERSHIP FOR MEMBERSHIP

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.MEMBER_ID IS NULL) THEN

NEW. MEMBER_I D - GEN_ID(GEN_MEMBER_ID, 1);

END

Подробную информацию о написании триггеров и хранимых процедур см. в части VII.

Вызовы функций

После установки Firebird содержит минимальный набор внутренних функций SQL. Хотя новые функции появляются время от времени, тем не менее сохраняется одно из основных достоинств Firebird: малый объем памяти, занимаемый сервером.

Функциональные возможности сервера могут быть легко расширены за счет его возможности получать доступ к функциям из внешних библиотек. Традиционно такие функции называются функциями, определенными пользователями (User-Defined Functions, UDF). Более корректно называть их внешними библиотеками функций. В реальности большинство администраторов баз данных используют хорошо протестированные библиотеки, находящиеся в общем пользовании и свободно распространяемые.

Внутренние функции SQL

В табл. 21.7 представлены внутренние функции SQL, доступные в Firebird.

Таблица 21.7. Внутренне реализованные функции SQL

Функция

Тип

Назначение

CAST

Преобразование

Преобразует столбец из одного типа данных в другой

EXTRACT

Преобразование

Выделяет части даты и времени (год, месяц, день и т.д.) из значений DATE, TIME и TIMESTAMP

SUBSTRING

Строка

Отыскивает последовательность символов в строке

UPPER

Строка

Преобразует символы в строке в верхний регистр

GEN_ID

Генерация

Возвращает значение генератора

AVGO

Агрегат

Вычисляет среднее значение набора значений

COUNT

Агрегат

Возвращает количество строк, которые удовлетворяют условию поиска запроса

MAX

Агрегат

Отыскивает максимальное значение в наборе значений

MIN

Агрегат

Отыскивает

минимальное значение в наборе значений

SUM

Агрегат

Суммирует значения в наборе числовых значений

Функции преобразования

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

CAST

Функция CAST широко используется. Она позволяет преобразовывать элемент данных одного типа данных в другой тип или трактовать его как другой тип данных.

Доступность

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

Синтаксис

CAST(значение AS <тип-данных>)

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

Фраза AS <тип-данных> с аргументом является обязательной.

Аргументы

значение является столбцом или выражением, которое преобразуется к типу данных, допустимому для преобразования в тип данных, названный в ключевом слове AS.

<тип-данных> должен быть родным типом данных Firebird. Нельзя указывать имя домена. Рис. 8.1 показывает все допустимые преобразования из одного типа в другой.

Возвращаемое значение

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

Пример

В следующем фрагменте PSQL поле LOG_DATE типа данных TIMESTAMP преобразуется в тип данных DATE, потому что для вычисления нужно получить целые дни:

. . .

IF (CURRENT_DATE - CAST (LOG_DATE AS DATE) = 30) THEN

STATUS = '30 DAYS';

Следующий оператор выбирает значение из столбца типа INTEGER, преобразует его в строку и соединяет со столбцом типа CHAR(3) для формирования значения другого столбца:

UPDATE MEMBERSHIP

SET MEMBER_CODE = MEMBER_GROUP || CAST(MEMBER_ID AS CHAR(8))

WHERE MEMBER_CODE IS NULL;

Связанные материалы

См. главу 8, где более подробно осуждается функция CAST, а также последующие главы, в которых индивидуально рассматриваются типы данных.

EXTRACT

Эта функция выделяет часть полей типа данных DATE, TIME и TIMESTAMP в виде числа.

Доступность

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

Синтаксис

EXTRACT(часть FROM поле)

Необязательные ключевые слова

YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | WEEKDAY | YEARDAY

Аргументы

часть является одним значением из указанного списка необязательных ключевых слов, WEEKDAY выделяет день недели (воскресенье = 1, понедельник = 2 и т.д.), YEARDAY выделяет день в году (от 1 января = 1 до 366).

Поделиться с друзьями: