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. Любой предикат, который может быть использован в условии поиска, также может быть предикатом для условия управления потоком в программе.
Важной функцией триггеров является проверка с использованием выражений поступающих новых
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 широко используется. Она позволяет преобразовывать элемент данных одного типа данных в другой тип или трактовать его как другой тип данных.
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, а также последующие главы, в которых индивидуально рассматриваются типы данных.
Эта функция выделяет часть полей типа данных 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).
- Telegram
- Viber
- Skype
- ВКонтакте