Upload
others
View
31
Download
0
Embed Size (px)
Citation preview
Руководство по языкуSQL СУБД Firebird 3.0
Firebird 3.0.48 августа 2018 — v.0051-1
Спонсоры документации:Platinum Sponsor
Gold Sponsor
http://moex.com/http://www.ib-aid.com/
Руководство по языку SQL СУБД Firebird 3.0: Firebird 3.0.4Над документом работали:Денис Симонов, Пол Винкенуг, Дмитрий Филиппов, Дмитрий Еманов, Александр Карпейкин, ДмитрийКузьменко, Алексей Ковязин
Редактор:Симонов Денис
3
СодержаниеВведение ......................................................................................................................................... 201. Структура языка ......................................................................................................................... 22
Общие сведения .................................................................................................................... 22Подмножества SQL ........................................................................................................ 22Диалекты SQL ................................................................................................................. 22Действия при ошибках ................................................................................................... 23
Основные сведения: операторы, предложения, ключевые слова ..................................... 23Идентификаторы .................................................................................................................... 24Литералы ................................................................................................................................. 25Операторы и специальные символы ................................................................................... 26Комментарии ........................................................................................................................... 26
2. Типы данных .............................................................................................................................. 28Целочисленные типы данных ............................................................................................... 30
SMALLINT ........................................................................................................................ 30INTEGER .......................................................................................................................... 30BIGINT .............................................................................................................................. 31Шестнадцатеричный формат для целых чисел .......................................................... 31
Типы данных с плавающей точкой ...................................................................................... 32FLOAT .............................................................................................................................. 32DOUBLE PRECISION ...................................................................................................... 32
Типы данных с фиксированной точкой ................................................................................ 32NUMERIC ......................................................................................................................... 33DECIMAL .......................................................................................................................... 34Точность арифметических операций ........................................................................... 34
Типы данных для работы с датой и временем ................................................................... 35DATE ................................................................................................................................ 35TIME ................................................................................................................................. 36TIMESTAMP ..................................................................................................................... 36Операции, использующие значения даты и времени ................................................. 36
Символьные типы данных ..................................................................................................... 37UNICODE ......................................................................................................................... 38Набор символов клиента ............................................................................................... 38Специальные наборы символов ................................................................................... 38Последовательность сортировки .................................................................................. 38
Регистронезависимый поиск ................................................................................. 39Последовательности сортировки для UTF-8 ....................................................... 39
Индексирование символьных типов ............................................................................. 40CHAR ............................................................................................................................... 40VARCHAR ........................................................................................................................ 41NCHAR ............................................................................................................................. 41Строковые литералы ..................................................................................................... 41
Альтернативы для апострофов в строковых литералах .................................... 42BOOLEAN ................................................................................................................................ 43Бинарные типы данных ......................................................................................................... 44
BLOB ................................................................................................................................ 44Подтипы BLOB ........................................................................................................ 45Особенности BLOB ................................................................................................. 45
Массивы ........................................................................................................................... 46Специальные типы данных ................................................................................................... 47
Тип данных SQL_NULL .................................................................................................. 47Преобразование типов данных ............................................................................................. 49
Руководство по языку SQL СУБД Firebird 3.0
4
Явное преобразование типов данных .......................................................................... 49Преобразование к домену ..................................................................................... 49Преобразование к типу столбца ........................................................................... 49Допустимые преобразования для функции CAST ............................................... 50Преобразование литералов дат и времени ......................................................... 50Сокращённое приведение типов даты и времени .............................................. 53
Неявное преобразование типов данных ...................................................................... 54Пользовательские типы данных — домены ........................................................................ 54
Атрибуты домена ........................................................................................................... 55Переопределение свойств доменов ............................................................................. 55Создание доменов ......................................................................................................... 56Изменение доменов ....................................................................................................... 56Удаление доменов ......................................................................................................... 57
3. Общие элементы языка ............................................................................................................ 58Выражения .............................................................................................................................. 58
Константы ........................................................................................................................ 60Строковые константы (литералы) ......................................................................... 60
Строковые константы в шестнадцатеричной нотации ................................ 60Вводный синтаксис для строковых литералов ............................................ 61
Числовые константы .............................................................................................. 61Шестнадцатеричная нотация чисел ............................................................. 62Диапазон значений шестнадцатеричных чисел .......................................... 62
Операторы SQL .............................................................................................................. 63Приоритет операторов ........................................................................................... 63Оператор конкатенации ......................................................................................... 63Арифметические операторы ................................................................................. 64Операторы сравнения ............................................................................................ 64Логические операторы ........................................................................................... 65
NEXT VALUE FOR .......................................................................................................... 65Условные выражения ..................................................................................................... 66
CASE ........................................................................................................................ 66NULL в выражениях ....................................................................................................... 67
Выражения возвращающие NULL ........................................................................ 67NULL в логических выражениях ............................................................................ 68
Подзапросы ............................................................................................................................. 68Коррелированные подзапросы ..................................................................................... 68Подзапросы возвращающие скалярный результат (Singletons) ................................ 69
Предикаты ............................................................................................................................... 70Утверждения ................................................................................................................... 70Предикаты сравнения .................................................................................................... 70Другие предикаты сравнения ........................................................................................ 71
BETWEEN ................................................................................................................ 71LIKE .......................................................................................................................... 72
Трафаретные символы .................................................................................. 72Использование управляющего символа в предложении ESCAPE ............. 72
STARTING WITH ..................................................................................................... 73CONTAINING ........................................................................................................... 74SIMILAR TO ............................................................................................................. 75
Синтаксис регулярных выражений SQL ....................................................... 75Создание регулярных выражений ................................................................ 76
IS DISTINCT FROM ................................................................................................ 80IS .............................................................................................................................. 81
Руководство по языку SQL СУБД Firebird 3.0
5
Предикаты существования ............................................................................................ 82EXISTS ..................................................................................................................... 82IN .............................................................................................................................. 83SINGULAR ............................................................................................................... 85
Количественные предикаты подзапросов .................................................................... 86ALL ........................................................................................................................... 86ANY и SOME ........................................................................................................... 87
4. Операторы DDL ......................................................................................................................... 88DATABASE .............................................................................................................................. 88
CREATE DATABASE ...................................................................................................... 88Использование псевдонимов БД .......................................................................... 90Создание БД на удалённом сервере ................................................................... 90Необязательные параметры CREATE DATABASE ............................................. 91Кто может создать базу данных? ......................................................................... 92Примеры .................................................................................................................. 92
ALTER DATABASE ......................................................................................................... 94Добавление вторичного файла ............................................................................. 95Изменение пути и имени дельта файла .............................................................. 95Перевод базы данных в режим «безопасного копирования» ............................. 96Изменение набора символов по умолчанию ....................................................... 96LINGER .................................................................................................................... 96Шифрование базы данных .................................................................................... 97Кто может выполнить ALTER DATABASE? .......................................................... 97Примеры .................................................................................................................. 97
DROP DATABASE ........................................................................................................... 99Кто может удалить базу данных? ......................................................................... 99Примеры .................................................................................................................. 99
SHADOW ................................................................................................................................. 99CREATE SHADOW ....................................................................................................... 100
Режимы AUTO и MANUAL ................................................................................... 100Необязательные параметры CREATE SHADOW .............................................. 101Кто может создать теневую копию? ................................................................... 101Примеры ................................................................................................................ 101
DROP SHADOW ............................................................................................................ 102Кто может удалить теневую копию? ................................................................... 102Примеры ................................................................................................................ 102
DOMAIN ................................................................................................................................. 102CREATE DOMAIN ......................................................................................................... 103
Кто может создать домен? .................................................................................. 106Примеры ................................................................................................................ 106
ALTER DOMAIN ............................................................................................................ 107Что не может изменить ALTER DOMAIN ........................................................... 110Кто может изменить домен? ............................................................................... 110Примеры ................................................................................................................ 110
DROP DOMAIN ............................................................................................................. 111Кто может удалить домен? ................................................................................. 111Примеры ................................................................................................................ 111
TABLE .................................................................................................................................... 112CREATE TABLE ............................................................................................................ 112
Символьные столбцы ........................................................................................... 115Ограничение NOT NULL ...................................................................................... 116Значение по умолчанию ...................................................................................... 116
Руководство по языку SQL СУБД Firebird 3.0
6
Столбцы основанные на домене ........................................................................ 116Столбцы идентификации (автоинкремент) ........................................................ 116Вычисляемые поля ............................................................................................... 117Столбцы типа массив .......................................................................................... 117Ограничения .......................................................................................................... 117
Имена для ограничений и их индексов ...................................................... 118Первичный ключ (PRIMARY KEY) ............................................................... 118Ограничение уникальности (UNIQUE) ........................................................ 118Внешний ключ (FOREIGN KEY) .................................................................. 119Ограничение CHECK .................................................................................... 121
Кто может создать таблицу? ............................................................................... 121Примеры ................................................................................................................ 121Глобальные временные таблицы (GTT) ............................................................ 123
Ограничения GTT ......................................................................................... 124Примеры ........................................................................................................ 124
Внешние таблицы ................................................................................................. 125Формат внешних файлов ............................................................................. 126Примеры использования внешних таблиц ................................................. 126
ALTER TABLE ............................................................................................................... 127Счётчик форматов ................................................................................................ 131Предложение ADD ................................................................................................ 131Предложение DROP ............................................................................................. 132Предложение DROP CONSTRAINT .................................................................... 132Предложение ALTER [COLUMN] ......................................................................... 132
Переименование столбца ............................................................................ 132Изменение типа столбца ............................................................................. 133Изменение позиции столбца ....................................................................... 133Установка и удаление значения по умолчанию ........................................ 133Установка и удаление ограничения NOT NULL ......................................... 133Изменение столбцов идентификации ......................................................... 134Изменение вычисляемых столбцов ............................................................ 134Не изменяемые атрибуты ............................................................................ 134
Кто может изменить таблицу? ............................................................................ 134Примеры ................................................................................................................ 134
DROP TABLE ................................................................................................................ 135Кто может удалить таблицу? .............................................................................. 136Примеры ................................................................................................................ 136
RECREATE TABLE ....................................................................................................... 136Примеры ................................................................................................................ 137
INDEX .................................................................................................................................... 137CREATE INDEX ............................................................................................................. 137
Уникальные индексы ............................................................................................ 138Направление индекса .......................................................................................... 138Вычисляемые индексы или индексы по выражению ........................................ 138Ограничения на индексы ..................................................................................... 138
Ограничения на длину индексируемой строки .......................................... 139Максимальное количество индексов на таблицу .............................................. 139Кто может создать индекс? ................................................................................. 139Примеры ................................................................................................................ 139
ALTER INDEX ................................................................................................................ 140Использование ALTER INDEX для индексов ограничений ............................... 141Кто может выполнить ALTER INDEX? ................................................................ 141
Руководство по языку SQL СУБД Firebird 3.0
7
Примеры ................................................................................................................ 141DROP INDEX ................................................................................................................. 142
Кто может удалить индекс? ................................................................................ 142Примеры ................................................................................................................ 142
SET STATISTICS .......................................................................................................... 142Селективность индекса ........................................................................................ 143Кто может обновить статистику? ........................................................................ 143Примеры ................................................................................................................ 143
VIEW ...................................................................................................................................... 144CREATE VIEW .............................................................................................................. 144
Обновляемые представления ............................................................................. 145WITH CHECK OPTIONS ....................................................................................... 145Кто может создать представление? ................................................................... 146Примеры ................................................................................................................ 146
ALTER VIEW ................................................................................................................. 149Кто может изменить представление? ................................................................ 149Примеры ................................................................................................................ 150
CREATE OR ALTER VIEW ........................................................................................... 150Примеры ................................................................................................................ 150
DROP VIEW ................................................................................................................... 151Кто может удалить представление? ................................................................... 151Примеры ................................................................................................................ 151
RECREATE VIEW ......................................................................................................... 151Примеры: ............................................................................................................... 152
TRIGGER ............................................................................................................................... 152CREATE TRIGGER ....................................................................................................... 153
Терминатор оператора ........................................................................................ 155DML триггеры (на таблицу или представление) ................................................ 155
Форма объявления ....................................................................................... 155Состояние триггера ...................................................................................... 156Фаза ............................................................................................................... 156События ......................................................................................................... 156Порядок срабатывания ................................................................................ 156Тело триггера ................................................................................................ 156Внешние триггеры ........................................................................................ 156Кто может создать DML триггер? ............................................................... 157Примеры ........................................................................................................ 157
Триггеры на событие базы данных .................................................................... 158Выполнение триггеров на событие базы данных и обработкаисключений .................................................................................................... 158Двухфазное подтверждение транзакций .................................................... 159Предостережения ......................................................................................... 159Кто может создать триггеры на события базы данных? ........................... 159Примеры ........................................................................................................ 159
Триггеры на события изменения метаданных ................................................... 160Пространство имён DDL_TRIGGER ............................................................ 161Отключение триггеров .................................................................................. 161Кто может создать триггеры на события изменения метаданных? .......... 161Примеры ........................................................................................................ 161
ALTER TRIGGER .......................................................................................................... 166Допустимые изменения ........................................................................................ 167Кто может изменить триггеры? ........................................................................... 167
Руководство по языку SQL СУБД Firebird 3.0
8
Примеры ................................................................................................................ 168CREATE OR ALTER TRIGGER .................................................................................... 168
Примеры ................................................................................................................ 169DROP TRIGGER ........................................................................................................... 169
Кто может удалить триггеры? ............................................................................. 170Примеры ................................................................................................................ 170
RECREATE TRIGGER .................................................................................................. 170Примеры ................................................................................................................ 171
PROCEDURE ........................................................................................................................ 171CREATE PROCEDURE ................................................................................................. 171
Терминатор оператора ........................................................................................ 174Параметры ............................................................................................................ 174
Входные параметры ..................................................................................... 174Выходные параметры .................................................................................. 174Использование доменов при объявлении параметров ............................. 174Использование типа столбца при объявлении параметров ..................... 174
Объявление локальных переменных, курсоров и подпрограмм ...................... 175Внешние хранимые процедуры .......................................................................... 175Кто может создать хранимую процедуру? ......................................................... 175Примеры ................................................................................................................ 175
ALTER PROCEDURE .................................................................................................... 176Кто может изменить хранимую процедуру? ...................................................... 179Примеры ................................................................................................................ 179
CREATE OR ALTER PROCEDURE ............................................................................. 179Примеры ................................................................................................................ 180
DROP PROCEDURE ..................................................................................................... 180Кто может удалить хранимую процедуру? ........................................................ 181Примеры ................................................................................................................ 181
RECREATE PROCEDURE ............................................................................................ 181Примеры ................................................................................................................ 182
FUNCTION ............................................................................................................................. 182CREATE FUNCTION ..................................................................................................... 182
Терминатор оператора ........................................................................................ 185Входные параметры ............................................................................................. 185Использование доменов при объявлении параметров .................................... 185Использование типа столбца при объявлении параметров ............................. 186Возвращаемое значение ..................................................................................... 186Детерминированные функции ............................................................................. 186Объявление локальных переменных, курсоров и подпрограмм ...................... 187Внешние функции ................................................................................................. 187Кто может создать функцию? ............................................................................. 188Примеры ................................................................................................................ 188
ALTER FUNCTION ........................................................................................................ 190Кто может изменить функцию? ........................................................................... 191Примеры ................................................................................................................ 191
CREATE OR ALTER FUNCTION ................................................................................. 191Примеры ................................................................................................................ 192
DROP FUNCTION ......................................................................................................... 192Кто может удалить функцию? ............................................................................. 192Примеры ................................................................................................................ 193
RECREATE FUNCTION ................................................................................................ 193Примеры ................................................................................................................ 193
Руководство по языку SQL СУБД Firebird 3.0
9
PACKAGE .............................................................................................................................. 194PACKAGE ...................................................................................................................... 194
CREATE PACKAGE .............................................................................................. 194Терминатор оператора ................................................................................. 196Параметры процедур и функций ................................................................ 196Детерминированные функции ..................................................................... 197Кто может создать пакет? ........................................................................... 198Примеры ........................................................................................................ 198
ALTER PACKAGE ................................................................................................. 198Кто может изменить заголовок пакета? ..................................................... 199Примеры ........................................................................................................ 199
CREATE OR ALTER PACKAGE ........................................................................... 199Примеры ........................................................................................................ 200
DROP PACKAGE ................................................................................................... 200Кто может удалить заголовок пакета? ....................................................... 200Примеры ........................................................................................................ 201
RECREATE PACKAGE ......................................................................................... 201Примеры ........................................................................................................ 201
PACKAGE BODY ........................................................................................................... 202CREATE PACKAGE BODY ................................................................................... 202
Кто может создать тело пакета? ................................................................ 205Примеры ........................................................................................................ 206
ALTER PACKAGE BODY ...................................................................................... 206Кто может изменить тело пакета? .............................................................. 207Примеры ........................................................................................................ 208
DROP PACKAGE BODY ....................................................................................... 208Кто может удалить тело пакета? ................................................................ 209Примеры ........................................................................................................ 209
RECREATE PACKAGE BODY .............................................................................. 209Примеры ........................................................................................................ 210
EXTERNAL FUNCTION ........................................................................................................ 210DECLARE EXTERNAL FUNCTION .............................................................................. 211
Кто может объявить внешнюю функцию? ......................................................... 213Примеры ................................................................................................................ 213
ALTER EXTERNAL FUNCTION .................................................................................... 214Кто может изменить внешнюю функцию? .......................................................... 215Примеры ................................................................................................................ 215
DROP EXTERNAL FUNCTION ..................................................................................... 215Кто может удалить внешнюю функцию? ............................................................ 215Примеры ................................................................................................................ 216
FILTER ................................................................................................................................... 216DECLARE FILTER ......................................................................................................... 216
Задание подтипов ................................................................................................ 217Параметры DECLARE FILTER ............................................................................ 217Кто может создать BLOB фильтр? ..................................................................... 217Примеры ................................................................................................................ 218
DROP FILTER ............................................................................................................... 218Кто может удалить BLOB фильтр? ..................................................................... 218Примеры ................................................................................................................ 219
SEQUENCE (GENERATOR) ................................................................................................. 219CREATE SEQUENCE ................................................................................................... 219
Кто может создать последовательность? .......................................................... 220
Руководство по языку SQL СУБД Firebird 3.0
10
Примеры ................................................................................................................ 220ALTER SEQUENCE ...................................................................................................... 221
Кто может изменить последовательность? ....................................................... 222Примеры ................................................................................................................ 222
CREATE OR ALTER SEQUENCE ................................................................................ 222Примеры ................................................................................................................ 223
DROP SEQUENCE ........................................................................................................ 223Кто может удалить генератор? ........................................................................... 224Примеры ................................................................................................................ 224
RECREATE SEQUENCE .............................................................................................. 224Примеры ................................................................................................................ 225
SET GENERATOR ........................................................................................................ 225Кто может изменить значение генератора? ...................................................... 225Примеры ................................................................................................................ 226
EXCEPTION ........................................................................................................................... 226CREATE EXCEPTION ................................................................................................... 226
Кто может создать исключение? ........................................................................ 227Примеры ................................................................................................................ 227
ALTER EXCEPTION ...................................................................................................... 227Кто может изменить исключение? ...................................................................... 228Примеры ................................................................................................................ 228
CREATE OR ALTER EXCEPTION ............................................................................... 228Примеры ................................................................................................................ 229
DROP EXCEPTION ....................................................................................................... 229Кто может удалить исключение? ........................................................................ 229Примеры ................................................................................................................ 230
RECREATE EXCEPTION .............................................................................................. 230Примеры ................................................................................................................ 230
COLLATION ........................................................................................................................... 231CREATE COLLATION ................................................................................................... 231
Специфичные атрибуты ....................................................................................... 232Кто может создать сортировку? .......................................................................... 233Примеры ................................................................................................................ 234
DROP COLLATION ....................................................................................................... 235Кто может удалить сортировку? ......................................................................... 235Примеры ................................................................................................................ 235
CHARACTER SET ................................................................................................................. 235ALTER CHARACTER SET ............................................................................................ 235
Примеры ................................................................................................................ 236ROLE ...................................................................................................................................... 236
CREATE ROLE .............................................................................................................. 237ALTER ROLE ................................................................................................................. 237DROP ROLE .................................................................................................................. 238
COMMENTS .......................................................................................................................... 238COMMENT ON .............................................................................................................. 238
Кто может добавить комментарий? .................................................................... 239Примеры ................................................................................................................ 240
5. Операторы DML ....................................................................................................................... 241SELECT ................................................................................................................................. 241
FIRST, SKIP ................................................................................................................... 242Особенности использования ............................................................................... 243
Список полей SELECT ................................................................................................. 244
Руководство по языку SQL СУБД Firebird 3.0
11
FROM ............................................................................................................................. 248Выборка из таблицы или представления .......................................................... 249Выборка из селективной хранимой процедуры ................................................. 250Выборка из производной таблицы (derived table) ............................................. 251Выборка из общих табличных выражений (CTE) .............................................. 255
Соединения (JOINS) ..................................................................................................... 257Внутренние (INNER) и внешние (OUTER) соединения ..................................... 258Обычные соединения ........................................................................................... 260
Соединения с явными условиями ............................................................... 261Соединения именованными столбцами ..................................................... 262
Естественные соединения (Natural Joins) .......................................................... 263Неявные соединения ........................................................................................... 264Смешивание явного и неявного соединения ..................................................... 265Перекрёстное соединение (CROSS JOIN) ......................................................... 265Неоднозначные имена полей в соединениях .................................................... 266Соединения с хранимыми процедурами ............................................................ 267
WHERE .......................................................................................................................... 267GROUP BY .................................................................................................................... 270
HAVING .................................................................................................................. 274PLAN .............................................................................................................................. 275UNION ............................................................................................................................ 283ORDER BY .................................................................................................................... 285
Направление сортировки ..................................................................................... 286Порядок сравнения .............................................................................................. 286Расположение NULL ............................................................................................ 286Сортировка частей UNION .................................................................................. 287
ROWS ............................................................................................................................ 288Особенности при использовании ROWS с одним аргументом ........................ 289Особенности при использовании ROWS с двумя аргументами ....................... 289Замена FIRST..SKIP ............................................................................................. 290Совместное использование FIRST..SKIP и ROWS ........................................... 290Использование ROWS в UNION ......................................................................... 290Примеры ................................................................................................................ 290
FETCH, OFFSET ........................................................................................................... 291FOR UPDATE [OF] ........................................................................................................ 292WITH LOCK ................................................................................................................... 293
Использование предложения FOR UPDATE ..................................................... 294Как сервер работает с WITH LOCK .................................................................... 295Предостережения при использовании WITH LOCK .......................................... 295
INTO ............................................................................................................................... 296Общие табличные выражения CTE ("WITH ... AS ... SELECT") ................................ 297
Рекурсивные CTE ................................................................................................. 299INSERT .................................................................................................................................. 302
INSERT ... VALUES ....................................................................................................... 303INSERT ... SELECT ....................................................................................................... 303INSERT ... DEFAULT VALUES ..................................................................................... 304RETURNING .................................................................................................................. 304
UPDATE ................................................................................................................................. 305SET ................................................................................................................................. 306WHERE .......................................................................................................................... 307PLAN .............................................................................................................................. 308ORDER BY и ROWS .................................................................................................... 308
Руководство по языку SQL СУБД Firebird 3.0
12
RETURNING .................................................................................................................. 309INTO ....................................................................................................................... 309
UPDATE OR INSERT ............................................................................................................ 310RETURNING .................................................................................................................. 311
DELETE ................................................................................................................................. 311WHERE .......................................................................................................................... 312PLAN .............................................................................................................................. 313ORDER BY и ROWS .................................................................................................... 313RETURNING .................................................................................................................. 314
MERGE .................................................................................................................................. 315EXECUTE PROCEDURE ...................................................................................................... 319
"Выполняемые" хранимые процедуры ....................................................................... 319EXECUTE BLOCK ................................................................................................................. 320
Входные и выходные параметры ............................................................................... 323Терминатор оператора ................................................................................................ 324
6. Процедурный язык PSQL ........................................................................................................ 325Элементы PSQL ................................................................................................................... 325
DML операторы с параметрами ................................................................................. 325Транзакции .................................................................................................................... 325Структура модуля ......................................................................................................... 326
Заголовок модуля ................................................................................................. 326Тело модуля .......................................................................................................... 326
Хранимые процедуры .......................................................................................................... 328Преимущества хранимых процедур ........................................................................... 328Типы хранимых процедур ............................................................................................ 328Создание хранимой процедуры .................................................................................. 329Изменение хранимой процедуры ............................................................................... 330Удаление хранимой процедуры .................................................................................. 330
Хранимые функции .............................................................................................................. 330Создание хранимой функции ...................................................................................... 330Изменение хранимой функции .................................................................................... 331Удаление хранимой функции ...................................................................................... 332
PSQL блоки ........................................................................................................................... 332Пакеты ................................................................................................................................... 333
Преимущества пакетов ................................................................................................ 333Создание пакета ........................................................................................................... 334Модификация пакета ................................................................................................... 338Удаление пакета ........................................................................................................... 339
Триггеры ................................................................................................................................ 339Порядок срабатывания ................................................................................................ 340DML триггеры ................................................................................................................ 340
Варианты триггеров ............................................................................................. 340Контекстные переменные NEW и OLD ............................................................... 340
Триггеры на события базы данных ............................................................................ 341DDL триггеры ................................................................................................................ 341
Переменные доступные в пространстве имён DDL_TRIGGER ........................ 341Создание триггера ........................................................................................................ 342Изменение триггера ..................................................................................................... 343Удаление триггера ....................................................................................................... 344
Написание кода тела модуля ............................................................................................. 345Оператор присваивания .............................................................................................. 345DECLARE ....................................................................................................................... 346
Руководство по языку SQL СУБД Firebird 3.0
13
DECLARE VARIABLE ............................................................................................ 346Типы данных для переменных .................................................................... 348
DECLARE CURSOR .............................................................................................. 349Однонаправленные и прокручиваемые курсоры ....................................... 349Особенности использования курсора ......................................................... 350Примеры использования именованного курсора ...................................... 350
DECLARE PROCEDURE ...................................................................................... 351DECLARE FUNCTION ........................................................................................... 353
BEGIN ... END ............................................................................................................... 354IF ... THEN ... ELSE ....................................................................................................... 356WHILE ... DO ................................................................................................................. 357LEAVE ............................................................................................................................ 358CONTINUE ..................................................................................................................... 360EXIT ................................................................................................................................ 361SUSPEND ...................................................................................................................... 362EXECUTE STATEMENT ............................................................................................... 363
Параметризованные операторы ......................................................................... 364Особенности использования параметризованных операторов ................ 364
WITH {AUTONOMOUS | COMMON} TRANSACTION .......................................... 366WITH CALLER PRIVILEGES ................................................................................ 366ON EXTERNAL [DATA SOURCE] ........................................................................ 366
Особенности пула подключений (Connection pooling) ............................... 367Особенности пула транзакций (Transaction pooling) ................................. 367Особенности обработки исключений .......................................................... 367Другие замечания ......................................................................................... 367
AS USER, PASSWORD и ROLE .......................................................................... 367Предостережения ................................................................................................. 368
FOR SELECT ................................................................................................................. 368Необъявленный курсор ........................................................................................ 369
FOR EXECUTE STATEMENT ....................................................................................... 372OPEN ............................................................................................................................. 373FETCH ............................................................................................................................ 374CLOSE ........................................................................................................................... 379IN AUTONOMOUS TRANSACTION ............................................................................. 379POST_EVENT ................................................................................................................ 380Обработка ошибок ........................................................................................................ 381
Системные исключения ....................................................................................... 381Пользовательские исключения ........................................................................... 382EXCEPTION ........................................................................................................... 382WHEN ... DO .......................................................................................................... 385
Область действия оператора WHEN ... DO ............................................... 3877. Встроенные функции и переменные ..................................................................................... 389
Контекстные переменные .................................................................................................... 389CURRENT_CONNECTION ............................................................................................ 389CURRENT_DATE .......................................................................................................... 389CURRENT_ROLE .......................................................................................................... 390CURRENT_TIME ........................................................................................................... 390CURRENT_TIMESTAMP ............................................................................................... 391CURRENT_TRANSACTION .......................................................................................... 392CURRENT_USER .......................................................................................................... 393DELETING ...................................................................................................................... 393GDSCODE ..................................................................................................................... 394
Руководство по языку SQL СУБД Firebird 3.0
14
INSERTING .................................................................................................................... 395LOCALTIME ................................................................................................................... 395LOCALTIMESTAMP ....................................................................................................... 396NEW ............................................................................................................................... 398'NOW' ............................................................................................................................. 398OLD ................................................................................................................................ 399ROW_COUNT ................................................................................................................ 400SQLCODE ...................................................................................................................... 401SQLSTATE ..................................................................................................................... 402'TODAY' .......................................................................................................................... 403'TOMORROW' ................................................................................................................ 403UPDATING ..................................................................................................................... 404'YERSTERDAY' .............................................................................................................. 405USER .............................................................................................................................. 405
Скалярные функции ............................................................................................................. 406Функции для работы с контекстными переменными ................................................ 406
RDB$GET_CONTEXT ........................................................................................... 406RDB$SET_CONTEXT ............................................................................................ 409
Математические функции ............................................................................................ 410ABS ......................................................................................................................... 410ACOS ...................................................................................................................... 411ACOSH ................................................................................................................... 411ASIN ....................................................................................................................... 412ASINH ..................................................................................................................... 412ATAN ...................................................................................................................... 412ATAN2 .................................................................................................................... 413ATANH .................................................................................................................... 414CEIL, CEILING ....................................................................................................... 414COS ........................................................................................................................ 414COSH ..................................................................................................................... 415COT ........................................................................................................................ 415EXP ......................................................................................................................... 416FLOOR ................................................................................................................... 416LN ........................................................................................................................... 416LOG ........................................................................................................................ 417LOG10 .................................................................................................................... 417MOD ....................................................................................................................... 418PI ............................................................................................................................ 418POWER .................................................................................................................. 419RAND ...................................................................................................................... 419ROUND ................................................................................................................... 419SIGN ....................................................................................................................... 420SIN .......................................................................................................................... 421SINH ....................................................................................................................... 421SQRT ...................................................................................................................... 422TAN ......................................................................................................................... 422TANH ...................................................................................................................... 422TRUNC ................................................................................................................... 423
Функции для работы со строками .............................................................................. 424ASCII_CHAR .......................................................................................................... 424ASCII_VAL .............................................................................................................. 424BIT_LENGTH .......................................................................................................... 425
Руководство по языку SQL СУБД Firebird 3.0
15
CHAR_LENGTH, CHARACTER_LENGTH ............................................................ 426HASH ...................................................................................................................... 426LEFT ....................................................................................................................... 427LOWER ................................................................................................................... 427LPAD ...................................................................................................................... 428OCTET_LENGTH ................................................................................................... 429OVERLAY ............................................................................................................... 430POSITION ............................................................................................................... 432REPLACE ............................................................................................................... 433REVERSE ............................................................................................................... 434RIGHT ..................................................................................................................... 435RPAD ...................................................................................................................... 435SUBSTRING ........................................................................................................... 436TRIM ....................................................................................................................... 438UPPER ................................................................................................................... 439
Функции для работы с датой и временем ................................................................. 440DATEADD ............................................................................................................... 440DATEDIFF .............................................................................................................. 441EXTRACT ............................................................................................................... 443
Функции преобразования типов .................................................................................. 444CAST ...................................................................................................................... 444
Функции побитовых операций ..................................................................................... 448BIN_AND ................................................................................................................ 448BIN_NOT ................................................................................................................ 448BIN_OR .................................................................................................................. 449BIN_SHL ................................................................................................................. 449BIN_SHR ................................................................................................................ 450BIN_XOR ................................................................................................................ 450
Функции для работы с UUID ....................................................................................... 451CHAR_TO_UUID .................................................................................................... 451GEN_UUID ............................................................................................................. 451UUID_TO_CHAR .................................................................................................... 452
Функции для работы с генераторами (последовательностями) .............................. 453GEN_ID .................................................................................................................. 453
Условные функции ....................................................................................................... 453COALESCE ............................................................................................................ 453DECODE ................................................................................................................ 454IIF ............................................................................................................................ 456MAXVALUE ............................................................................................................ 456MINVALUE ............................................................................................................. 457NULLIF ................................................................................................................... 458
Агрегатные функции ............................................................................................................ 458AVG ................................................................................................................................ 459COUNT ........................................................................................................................... 459LIST ................................................................................................................................ 460MAX ................................................................................................................................ 461MIN .........................................................................