View
22
Download
0
Category
Preview:
Citation preview
Руководство по языкуSQL СУБД Firebird 3.0
18 сентября 2015 — v.0001-1 для Firebird 3.0 Beta 2
Спонсоры документации:Platinum Sponsor
Gold Sponsor
http://moex.com/http://www.ib-aid.com/
Руководство по языку SQL СУБД Firebird 3.0Над документом работали:Денис Симонов, Пол Винкенуг, Дмитрий Филиппов, Дмитрий Еманов, Томас Воинк, Александр Карпейкин,Дмитрий Кузьменко, Алексей Ковязин
Редактор:Симонов Денис
3
СодержаниеВведение ......................................................................................................................................... 191. Общие сведения ........................................................................................................................ 21
Подмножества SQL ................................................................................................................ 21Диалекты SQL ........................................................................................................................ 21Действия при ошибках ........................................................................................................... 22
2. Структура языка ......................................................................................................................... 23Основные сведения: операторы, предложения, ключевые слова ..................................... 23Идентификаторы .................................................................................................................... 24Литералы ............................................................................................................................... 25Операторы и специальные символы ................................................................................... 25Комментарии ........................................................................................................................... 26
3. Типы и подтипы данных ........................................................................................................... 27Целочисленные типы данных ............................................................................................... 29
SMALLINT ........................................................................................................................ 29INTEGER .......................................................................................................................... 29BIGINT .............................................................................................................................. 30
Типы данных с плавающей точкой ...................................................................................... 31FLOAT .............................................................................................................................. 31DOUBLE PRECISION ...................................................................................................... 31
Типы данных с фиксированной точкой ................................................................................ 31NUMERIC ......................................................................................................................... 32DECIMAL .......................................................................................................................... 32
Типы данных для работы с датой и временем ................................................................... 33DATE ................................................................................................................................ 33TIME ................................................................................................................................. 33TIMESTAMP ..................................................................................................................... 34Операции, использующие значения даты и времени ................................................. 34
Символьные типы данных ..................................................................................................... 35UNICODE ......................................................................................................................... 35Набор символов клиента ............................................................................................... 36Специальные наборы символов ................................................................................... 36Последовательность сортировки .................................................................................. 36
Регистронезависимый поиск ................................................................................. 36Последовательности сортировки для UTF-8 ....................................................... 37
Индексирование символьных типов ............................................................................. 37CHAR ............................................................................................................................... 38VARCHAR ........................................................................................................................ 38NCHAR ............................................................................................................................. 39Строковые литералы ..................................................................................................... 39
Альтернативы для апострофов в строковых литералах .................................... 39BOOLEAN ................................................................................................................................ 40Бинарные типы данных ......................................................................................................... 42
BLOB ................................................................................................................................ 42Подтипы BLOB ........................................................................................................ 43Особенности BLOB ................................................................................................. 43
Массивы ........................................................................................................................... 44Специальные типы данных ................................................................................................... 45
Тип данных SQL_NULL .................................................................................................. 45Преобразование типов данных ............................................................................................. 46
Явное преобразование типов данных .......................................................................... 47Преобразование к домену ..................................................................................... 47
Руководство по языку SQL СУБД Firebird 3.0
4
Преобразование к типу столбца ........................................................................... 47Допустимые преобразования для функции CAST ............................................... 47Преобразование литералов дат и времени ......................................................... 48Сокращённое приведение типов даты и времени (datetime) ............................. 51
Неявное преобразование типов данных ...................................................................... 51Пользовательские типы данных — домены ........................................................................ 52
Атрибуты домена ........................................................................................................... 52Переопределение свойств доменов ............................................................................. 53Создание доменов ......................................................................................................... 53Изменение доменов ....................................................................................................... 54Удаление доменов ......................................................................................................... 55
4. Общие элементы языка ............................................................................................................ 56Выражения .............................................................................................................................. 56
Операторы SQL .............................................................................................................. 58Приоритет операторов ........................................................................................... 58Оператор конкатенации ......................................................................................... 58Арифметические операторы ................................................................................. 59Операторы сравнения ............................................................................................ 59Логические операторы ........................................................................................... 59
NEXT VALUE FOR .......................................................................................................... 60Условные выражения ..................................................................................................... 60
CASE ........................................................................................................................ 61NULL в выражениях ....................................................................................................... 62
Выражения возвращающие NULL ........................................................................ 62NULL в логических выражениях ............................................................................ 63
Подзапросы ............................................................................................................................. 63Коррелированные подзапросы ..................................................................................... 63Подзапросы возвращающие скалярный результат (Singletons) ................................ 64
Предикаты ............................................................................................................................... 65Утверждения ................................................................................................................... 65Предикаты сравнения .................................................................................................... 65Другие предикаты сравнения ........................................................................................ 66
BETWEEN ................................................................................................................ 66LIKE .......................................................................................................................... 66
Трафаретные символы .................................................................................. 67Использование управляющего символа в предложении ESCAPE ............. 67
STARTING WITH ..................................................................................................... 68CONTAINING ........................................................................................................... 69SIMILAR TO ............................................................................................................. 69
Синтаксис регулярных выражений SQL ....................................................... 70Создание регулярных выражений ................................................................ 71
IS DISTINCT FROM ................................................................................................ 75IS .............................................................................................................................. 76
IS NULL ............................................................................................................................ 77Предикаты существования ............................................................................................ 77
EXISTS ..................................................................................................................... 77IN .............................................................................................................................. 78SINGULAR ............................................................................................................... 80
Количественные предикаты подзапросов .................................................................... 81ALL ........................................................................................................................... 81ANY и SOME ........................................................................................................... 82
5. Операторы DDL ......................................................................................................................... 83
Руководство по языку SQL СУБД Firebird 3.0
5
DATABASE .............................................................................................................................. 83CREATE DATABASE ...................................................................................................... 83
Использование псевдонимов БД .......................................................................... 85Создание удалённых БД ....................................................................................... 85Необязательные параметры CREATE DATABASE ............................................. 86Кто может создать базу данных? ......................................................................... 87Примеры .................................................................................................................. 87
ALTER DATABASE ......................................................................................................... 89Добавление вторичного файла ............................................................................. 90Изменение пути и имени дельта файла .............................................................. 90Перевод базы данных в режим "безопасного копирования" .............................. 90Изменение набора символов по умолчанию ....................................................... 91LINGER .................................................................................................................... 91Шифрование базы данных .................................................................................... 92Кто может выполнить ALTER DATABASE? .......................................................... 92Примеры .................................................................................................................. 92
DROP DATABASE ........................................................................................................... 93Кто может удалить базу данных? ......................................................................... 94Примеры .................................................................................................................. 94
SHADOW ................................................................................................................................. 94CREATE SHADOW ......................................................................................................... 94
Режимы AUTO и MANUAL ..................................................................................... 95Необязательные параметры CREATE SHADOW ................................................ 96Кто может создать теневую копию? ..................................................................... 96Примеры .................................................................................................................. 96
DROP SHADOW .............................................................................................................. 96Кто может удалить теневую копию? .................................................................... 97Примеры .................................................................................................................. 97
DOMAIN ................................................................................................................................... 97CREATE DOMAIN ........................................................................................................... 98
Кто может создать домен? .................................................................................. 101Примеры ................................................................................................................ 101
ALTER DOMAIN ............................................................................................................ 102Что не может изменить ALTER DOMAIN ........................................................... 105Кто может изменить домен? ............................................................................... 105Примеры ................................................................................................................ 106
DROP DOMAIN ............................................................................................................. 106Кто может удалить домен? ................................................................................. 107Примеры ................................................................................................................ 107
TABLE .................................................................................................................................... 107CREATE TABLE ............................................................................................................ 108
Символьные столбцы ........................................................................................... 111Ограничение NOT NULL ...................................................................................... 112Значение по умолчанию ...................................................................................... 112Столбцы основанные на домене ........................................................................ 112Столбцы идентификации (автоинкремент) ........................................................ 112Вычисляемые поля ............................................................................................... 113Столбцы типа массив .......................................................................................... 113Ограничения .......................................................................................................... 113
Именованные ограничения .......................................................................... 114Автоматически создаваемые индексы ....................................................... 114Первичный ключ (PRIMARY KEY) ............................................................... 114
Руководство по языку SQL СУБД Firebird 3.0
6
Ограничение уникальности (UNIQUE) ........................................................ 114Внешний ключ (FOREIGN KEY) .................................................................. 115Ограничение CHECK .................................................................................... 116
Кто может создать таблицу? ............................................................................... 117Примеры ................................................................................................................ 117Глобальные временные таблицы (GTT) ............................................................ 119
Примеры ........................................................................................................ 120Внешние таблицы ................................................................................................. 120
Примеры ........................................................................................................ 120ALTER TABLE ............................................................................................................... 120
ALTER TABLE ....................................................................................................... 125Предложение ADD ................................................................................................ 125Предложение DROP ............................................................................................. 125Предложение DROP CONSTRAINT .................................................................... 126Предложение ALTER [COLUMN] ......................................................................... 126
Переименование столбца ............................................................................ 126Изменение типа столбца ............................................................................. 126Изменение позиции столбца ....................................................................... 127Установка и удаление значения по умолчанию ........................................ 127Установка и удаление ограничения NOT NULL ......................................... 127Изменение столбцов идентификации ......................................................... 127Изменение вычисляемых столбцов ............................................................ 127Не изменяемые атрибуты ............................................................................ 128
Кто может изменить таблицу? ............................................................................ 128Примеры ................................................................................................................ 128
DROP TABLE ................................................................................................................ 129Кто может удалить таблицу? .............................................................................. 130Примеры ................................................................................................................ 130
RECREATE TABLE ....................................................................................................... 130Примеры ................................................................................................................ 130
INDEX .................................................................................................................................... 131CREATE INDEX ............................................................................................................. 131
Уникальные индексы ............................................................................................ 132Направление индекса .......................................................................................... 132Вычисляемые индексы или индексы по выражению ........................................ 132Ограничения на индексы ..................................................................................... 132
Ограничения на длину индексируемой строки .......................................... 133Максимальное количество индексов на таблицу .............................................. 133Кто может создать индекс? ................................................................................. 133Примеры ................................................................................................................ 133
ALTER INDEX ................................................................................................................ 134Кто может выполнить ALTER INDEX? ................................................................ 135Примеры ................................................................................................................ 135
DROP INDEX ................................................................................................................. 136Кто может удалить индекс? ................................................................................ 136Примеры ................................................................................................................ 136
SET STATISTICS .......................................................................................................... 137Селективность индекса ........................................................................................ 137Кто может обновить статистику? ........................................................................ 137Примеры ................................................................................................................ 138
VIEW ...................................................................................................................................... 138CREATE VIEW .............................................................................................................. 138
Руководство по языку SQL СУБД Firebird 3.0
7
Обновляемые представления ............................................................................. 139WITH CHECK OPTIONS ....................................................................................... 139Кто может создать представление? ................................................................... 140Примеры ................................................................................................................ 140
ALTER VIEW ................................................................................................................. 142Кто может изменить представление? ................................................................ 143Примеры ................................................................................................................ 143
CREATE OR ALTER VIEW ........................................................................................... 144Примеры ................................................................................................................ 144
DROP VIEW ................................................................................................................... 145Кто может удалить представление? ................................................................... 145Примеры ................................................................................................................ 145
RECREATE VIEW ......................................................................................................... 146Примеры: ............................................................................................................... 146
TRIGGER ............................................................................................................................... 147CREATE TRIGGER ....................................................................................................... 147
Табличные триггеры ............................................................................................. 149Форма объявления ....................................................................................... 150Состояние триггера ...................................................................................... 150Фаза ............................................................................................................... 150События таблицы ......................................................................................... 150Порядок срабатывания ................................................................................ 150Тело табличного триггера ............................................................................ 150Внешние триггеры ........................................................................................ 151Кто может создать табличный триггер? ..................................................... 151Примеры ........................................................................................................ 151
Триггеры на событие базы данных .................................................................... 152Выполнение триггеров на событие базы данных и обработкаисключений .................................................................................................... 152Двухфазное подтверждение транзакций .................................................... 153Отключение триггеров .................................................................................. 153Предостережения ......................................................................................... 153Кто может создать триггеры на события базы данных? ........................... 153Примеры ........................................................................................................ 153
Триггеры на события изменения метаданных ................................................... 154Пространство имён DDL_TRIGGER ............................................................ 155Отключение триггеров .................................................................................. 156Кто может создать триггеры на события базы данных? ........................... 156Примеры ........................................................................................................ 156
ALTER TRIGGER .......................................................................................................... 160Допустимые изменения ........................................................................................ 161Кто может изменить триггеры? ........................................................................... 162Примеры ................................................................................................................ 162
CREATE OR ALTER TRIGGER .................................................................................... 163Примеры ................................................................................................................ 164
DROP TRIGGER ........................................................................................................... 164Кто может удалить триггеры? ............................................................................. 164Примеры ................................................................................................................ 165
RECREATE TRIGGER .................................................................................................. 165Примеры ................................................................................................................ 166
PROCEDURE ........................................................................................................................ 166CREATE PROCEDURE ................................................................................................. 166
Руководство по языку SQL СУБД Firebird 3.0
8
Параметры ............................................................................................................ 169Входные параметры ..................................................................................... 169Выходные параметры .................................................................................. 169Использование доменов при объявлении параметров ............................. 170Использование типа столбца при объявлении параметров ..................... 170
Объявление локальных переменных, курсоров и подпрограмм ...................... 170Внешние хранимые процедуры .......................................................................... 170Кто может создать хранимую процедуру? ......................................................... 170Примеры ................................................................................................................ 171
ALTER PROCEDURE .................................................................................................... 171Кто может изменить хранимую процедуру? ...................................................... 172Примеры ................................................................................................................ 172
CREATE OR ALTER PROCEDURE ............................................................................. 173Примеры ................................................................................................................ 173
DROP PROCEDURE ..................................................................................................... 174Кто может удалить хранимую процедуру? ........................................................ 174Примеры ................................................................................................................ 175
RECREATE PROCEDURE ............................................................................................ 175Примеры ................................................................................................................ 175
FUNCTION ............................................................................................................................. 176CREATE FUNCTION ..................................................................................................... 176
Входные параметры ............................................................................................. 179Использование доменов при объявлении параметров .................................... 179Использование типа столбца при объявлении параметров ............................. 179Возвращаемое значение ..................................................................................... 179Детерминированные функции ............................................................................. 180Объявление локальных переменных, курсоров и подпрограмм ...................... 180Внешние функции ................................................................................................. 181Кто может создать функцию? ............................................................................. 181Примеры ................................................................................................................ 181
ALTER FUNCTION ........................................................................................................ 183Кто может изменить функцию? ........................................................................... 184Примеры ................................................................................................................ 184
CREATE OR ALTER FUNCTION ................................................................................. 185Примеры ................................................................................................................ 185
DROP FUNCTION ......................................................................................................... 185Кто может удалить функцию? ............................................................................. 186Примеры ................................................................................................................ 186
RECREATE FUNCTION ................................................................................................ 186Примеры ................................................................................................................ 187
PACKAGE .............................................................................................................................. 187PACKAGE ...................................................................................................................... 187
CREATE PACKAGE .............................................................................................. 187Параметры процедур и функций ................................................................ 190Детерминированные функции ..................................................................... 191Кто может создать пакет? ........................................................................... 191Примеры ........................................................................................................ 191
ALTER PACKAGE ................................................................................................. 192Кто может изменить заголовок пакета? ..................................................... 192Примеры ........................................................................................................ 193
CREATE OR ALTER PACKAGE ........................................................................... 193Примеры ........................................................................................................ 194
Руководство по языку SQL СУБД Firebird 3.0
9
DROP PACKAGE ................................................................................................... 194Кто может удалить заголовок пакета? ....................................................... 194Примеры ........................................................................................................ 195
RECREATE PACKAGE ......................................................................................... 195Примеры ........................................................................................................ 195
PACKAGE BODY ........................................................................................................... 196CREATE PACKAGE BODY ................................................................................... 196
Кто может создать тело пакета? ................................................................ 200Примеры ........................................................................................................ 200
ALTER PACKAGE BODY ...................................................................................... 201Кто может изменить тело пакета? .............................................................. 202Примеры ........................................................................................................ 202
DROP PACKAGE BODY ....................................................................................... 203Кто может удалить тело пакета? ................................................................ 203Примеры ........................................................................................................ 204
RECREATE PACKAGE BODY .............................................................................. 204Примеры ........................................................................................................ 205
EXTERNAL FUNCTION ........................................................................................................ 205DECLARE EXTERNAL FUNCTION .............................................................................. 206
Кто может объявить внешнюю функцию? ......................................................... 208Примеры ................................................................................................................ 208
ALTER EXTERNAL FUNCTION .................................................................................... 209Кто может изменить внешнюю функцию? .......................................................... 209Примеры ................................................................................................................ 210
DROP EXTERNAL FUNCTION ..................................................................................... 210Кто может удалить внешнюю функцию? ............................................................ 210Примеры ................................................................................................................ 211
FILTER ................................................................................................................................... 211DECLARE FILTER ......................................................................................................... 211
Задание подтипов ................................................................................................ 212Параметры DECLARE FILTER ............................................................................ 212Кто может создать BLOB фильтр? ..................................................................... 213Примеры ................................................................................................................ 213
DROP FILTER ............................................................................................................... 213Кто может удалить BLOB фильтр? ..................................................................... 214Примеры ................................................................................................................ 214
SEQUENCE (GENERATOR) ................................................................................................. 214CREATE {SEQUENCE | GENERATOR} ....................................................................... 215
Кто может создать последовательность? .......................................................... 215Примеры ................................................................................................................ 216
ALTER {SEQUENCE | GENERATOR} .......................................................................... 216Кто может изменить последовательность? ....................................................... 217Примеры ................................................................................................................ 218
CREATE OR ALTER {SEQUENCE | GENERATOR} .................................................... 218Примеры ................................................................................................................ 219
DROP {SEQUENCE | GENERATOR} ........................................................................... 219Кто может удалить генератор? ........................................................................... 219Примеры ................................................................................................................ 220
RECREATE {SEQUENCE | GENERATOR} .................................................................. 220Примеры ................................................................................................................ 220
SET GENERATOR ........................................................................................................ 220Кто может изменить значение генератора? ...................................................... 221
Руководство по языку SQL СУБД Firebird 3.0
10
EXCEPTION ........................................................................................................................... 221CREATE EXCEPTION ................................................................................................... 222
Кто может создать исключение? ........................................................................ 222Примеры ................................................................................................................ 223
ALTER EXCEPTION ...................................................................................................... 223Кто может изменить исключение? ...................................................................... 223Примеры ................................................................................................................ 224
CREATE OR ALTER EXCEPTION ............................................................................... 224Примеры ................................................................................................................ 225
DROP EXCEPTION ....................................................................................................... 225Кто может удалить исключение? ........................................................................ 225Примеры ................................................................................................................ 225
RECREATE EXCEPTION .............................................................................................. 226Примеры ................................................................................................................ 226
COLLATION ........................................................................................................................... 226CREATE COLLATION ................................................................................................... 227
Специфичные атрибуты ....................................................................................... 228Кто может создать сортировку? .......................................................................... 229Примеры ................................................................................................................ 230
DROP COLLATION ....................................................................................................... 231Кто может удалить сортировку? ......................................................................... 231Примеры ................................................................................................................ 231
CHARACTER SET ................................................................................................................. 232ALTER CHARACTER SET ............................................................................................ 232
Примеры ................................................................................................................ 232COMMENTS .......................................................................................................................... 233
COMMENT ON .............................................................................................................. 233Кто может добавить комментарий? .................................................................... 234Примеры ................................................................................................................ 234
6. Операторы DML ....................................................................................................................... 236SELECT ................................................................................................................................. 236
FIRST, SKIP ................................................................................................................... 237Особенности использования ............................................................................... 238
Список полей SELECT ................................................................................................. 239FROM ............................................................................................................................. 243
Выборка из таблицы или представления .......................................................... 244Выборка из селективной хранимой процедуры ................................................. 245Выборка из производной таблицы (derived table) ............................................. 247Выборка из общих табличных выражений (CTE) .............................................. 251
Соединения (JOINS) ..................................................................................................... 253Внутренние (INNER) и внешние (OUTER) соединения ..................................... 254Обычные соединения ........................................................................................... 257
Соединения с явными условиями ............................................................... 257Соединения именованными столбцами ..................................................... 258
Естественные соединения (Natural Joins) .......................................................... 259Неявные соединения ........................................................................................... 260Смешивание явного и неявного соединения ..................................................... 261Перекрёстное соединение (CROSS JOIN) ......................................................... 261Неоднозначные имена полей в соединениях .................................................... 262Соединения с хранимыми процедурами ............................................................ 263
WHERE .......................................................................................................................... 263GROUP BY .................................................................................................................... 266
Руководство по языку SQL СУБД Firebird 3.0
11
HAVING .................................................................................................................. 270PLAN .............................................................................................................................. 271UNION ............................................................................................................................ 279ORDER BY .................................................................................................................... 281
Направление сортировки ..................................................................................... 282Порядок сравнения .............................................................................................. 283Расположение NULL ............................................................................................ 283Сортировка частей UNION .................................................................................. 283
ROWS ............................................................................................................................ 285Особенности при использовании ROWS с одним аргументом ........................ 286Особенности при использовании ROWS с двумя аргументами ....................... 286Замена FIRST..SKIP ............................................................................................. 286Совместное использование FIRST..SKIP и ROWS ........................................... 286Использование ROWS в UNION ......................................................................... 286Примеры ................................................................................................................ 287
FETCH, OFFSET ........................................................................................................... 287WITH LOCK ................................................................................................................... 289INTO ............................................................................................................................... 292Общие табличные выражения CTE ("WITH ... AS ... SELECT") ................................ 293
Рекурсивные CTE ................................................................................................. 295INSERT .................................................................................................................................. 297
INSERT ... VALUES ....................................................................................................... 299INSERT ... SELECT ....................................................................................................... 299INSERT ... DEFAULT VALUES ..................................................................................... 300RETURNING .................................................................................................................. 300
UPDATE ................................................................................................................................. 301SET ................................................................................................................................. 302WHERE .......................................................................................................................... 303ORDER BY и ROWS .................................................................................................... 304RETURNING .................................................................................................................. 304
INTO ....................................................................................................................... 305UPDATE OR INSERT ............................................................................................................ 305
RETURNING .................................................................................................................. 306DELETE ................................................................................................................................. 307
WHERE .......................................................................................................................... 308PLAN .............................................................................................................................. 309ORDER BY и ROWS .................................................................................................... 309RETURNING .................................................................................................................. 310
MERGE .................................................................................................................................. 310EXECUTE PROCEDURE ...................................................................................................... 315
"Выполняемые" хранимые процедуры ....................................................................... 315EXECUTE BLOCK ................................................................................................................. 316
Входные и выходные параметры ............................................................................... 320Терминатор оператора ................................................................................................ 320
7. Процедурный язык PSQL ........................................................................................................ 322Элементы PSQL ................................................................................................................... 322
DML операторы с параметрами ................................................................................. 322Транзакции .................................................................................................................... 322Структура модуля ......................................................................................................... 323
Заголовок модуля ................................................................................................. 323Тело модуля .......................................................................................................... 323
Хранимые процедуры .......................................................................................................... 325
Руководство по языку SQL СУБД Firebird 3.0
12
Преимущества хранимых процедур ........................................................................... 325Типы хранимых процедур ............................................................................................ 325Создание хранимой процедуры .................................................................................. 326Изменение хранимой процедуры ............................................................................... 326Удаление хранимой процедуры .................................................................................. 327
Хранимые функции .............................................................................................................. 327Создание хранимой функции ...................................................................................... 327Изменение хранимой функции .................................................................................... 328Удаление хранимой функции ...................................................................................... 328
PSQL блоки ........................................................................................................................... 329Пакеты ................................................................................................................................... 329
Преимущества пакетов ................................................................................................ 330Создание пакета ........................................................................................................... 330Модификация пакета ................................................................................................... 335Удаление пакета ........................................................................................................... 336
Триггеры ................................................................................................................................ 336Порядок срабатывания ................................................................................................ 336DML триггеры ................................................................................................................ 336
Варианты триггеров ............................................................................................. 336Контекстные переменные NEW и OLD ............................................................... 337
Триггеры на события базы данных ............................................................................ 337DDL триггеры ................................................................................................................ 338
Переменные доступные в пространстве имён DDL_TRIGGER ........................ 338Создание триггера ........................................................................................................ 338Изменение триггера ..................................................................................................... 340Удаление триггера ....................................................................................................... 341
Написание кода тела модуля ............................................................................................. 341Оператор присваивания .............................................................................................. 341DECLARE ....................................................................................................................... 342
DECLARE VARIABLE ............................................................................................ 343Типы данных для переменных .................................................................... 344
DECLARE CURSOR .............................................................................................. 345Однонаправленные и прокручиваемые курсоры ....................................... 346Особенности использования курсора ......................................................... 346Примеры использования именованного курсора ...................................... 347
DECLARE PROCEDURE ...................................................................................... 348DECLARE FUNCTION ........................................................................................... 349
BEGIN ... END ............................................................................................................... 351IF ... THEN ... ELSE ....................................................................................................... 352WHILE ... DO ................................................................................................................. 354LEAVE ............................................................................................................................ 355CONTINUE ..................................................................................................................... 356EXIT ................................................................................................................................ 357SUSPEND ...................................................................................................................... 358EXECUTE STATEMENT ............................................................................................... 359
Параметризованные операторы ......................................................................... 360Особенности использования параметризованных операторов ................ 361
WITH {AUTONOMOUS | COMMON} TRANSACTION .......................................... 362WITH CALLER PRIVILEGES ................................................................................ 362ON EXTERNAL [DATA SOURCE] ........................................................................ 363
Особенности пула подключений (Connection pooling) ............................... 363Особенности пула транзакций (Transaction pooling) ................................. 363
Руководство по языку SQL СУБД Firebird 3.0
13
Особенности обработки исключений .......................................................... 363Другие замечания ......................................................................................... 363
AS USER, PASSWORD и ROLE .......................................................................... 364Предостережения ................................................................................................. 364
FOR SELECT ................................................................................................................. 365Необъявленный курсор ........................................................................................ 365
FOR EXECUTE STATEMENT ....................................................................................... 369OPEN ............................................................................................................................. 370FETCH ............................................................................................................................ 370CLOSE ........................................................................................................................... 375IN AUTONOMOUS TRANSACTION ............................................................................. 375POST_EVENT ................................................................................................................ 377Обработка ошибок ........................................................................................................ 377
EXCEPTION ........................................................................................................... 378WHEN ... DO .......................................................................................................... 381
Область действия оператора WHEN ... DO ............................................... 3838. Встроенные функции и переменные ..................................................................................... 385
Контекстные переменные .................................................................................................... 385CURRENT_CONNECTION ............................................................................................ 385CURRENT_DATE .......................................................................................................... 385CURRENT_ROLE .......................................................................................................... 386CURRENT_TIME ........................................................................................................... 386CURRENT_TIMESTAMP ............................................................................................... 387CURRENT_TRANSACTION .......................................................................................... 388CURRENT_USER .......................................................................................................... 388DELETING ...................................................................................................................... 389GDSCODE ..................................................................................................................... 389INSERTING .................................................................................................................... 390NEW ............................................................................................................................... 391'NOW' ............................................................................................................................. 392OLD ................................................................................................................................ 392ROW_COUNT ................................................................................................................ 393SQLCODE ...................................................................................................................... 394SQLSTATE ..................................................................................................................... 395'TODAY' .......................................................................................................................... 395'TOMORROW' ................................................................................................................ 396UPDATING ..................................................................................................................... 397'YERSTERDAY' .............................................................................................................. 397USER .............................................................................................................................. 398
Скалярные функции ............................................................................................................. 398Функции для работы с контекстными переменными ................................................ 398
RDB$GET_CONTEXT ........................................................................................... 398RDB$SET_CONTEXT ............................................................................................ 401
Математические функции ............................................................................................ 403ABS ......................................................................................................................... 403ACOS ...................................................................................................................... 403ACOSH ................................................................................................................... 404ASIN ....................................................................................................................... 404ASINH ..................................................................................................................... 404ATAN ...................................................................................................................... 405ATAN2 .................................................................................................................... 405ATANH .................................................................................................................... 406
Руководство по языку SQL СУБД Firebird 3.0
14
CEIL, CEILING ....................................................................................................... 406COS ........................................................................................................................ 407COSH ..................................................................................................................... 407COT ........................................................................................................................ 407EXP ......................................................................................................................... 408FLOOR ................................................................................................................... 408LN ........................................................................................................................... 409LOG ........................................................................................................................ 409LOG10 .................................................................................................................... 410MOD ....................................................................................................................... 410PI ............................................................................................................................ 411POWER .................................................................................................................. 411RAND ...................................................................................................................... 411ROUND ................................................................................................................... 412SIGN ....................................................................................................................... 412SIN .......................................................................................................................... 413SINH ....................................................................................................................... 413SQRT ...................................................................................................................... 414TAN ......................................................................................................................... 414TANH ...................................................................................................................... 415TRUNC ................................................................................................................... 415
Функции для работы со строками .............................................................................. 416ASCII_CHAR .......................................................................................................... 416ASCII_VAL .............................................................................................................. 416BIT_LENGTH .......................................................................................................... 417CHAR_LENGTH, CHARACTER_LENGTH ............................................................ 418HASH ...................................................................................................................... 418LEFT ....................................................................................................................... 419LOWER ................................................................................................................... 420LPAD ...................................................................................................................... 420OCTET_LENGTH ................................................................................................... 421OVERLAY ............................................................................................................... 422POSITION ............................................................................................................... 424REPLACE ............................................................................................................... 425REVERSE ............................................................................................................... 426RIGHT ..................................................................................................................... 427RPAD ...................................................................................................................... 427SUBSTRING ........................................................................................................... 428TRIM ....................................................................................................................... 430UPPER ................................................................................................................... 431
Функции для работы с датой и временем ................................................................. 432DATEADD ............................................................................................................... 432DATEDIFF .............................................................................................................. 433EXTRACT ............................................................................................................... 435
Функции преобразования типов .................................................................................. 436CAST ...................................................................................................................... 436
Функции побитовых операций ..................................................................................... 440BIN_AND ................................................................................................................ 440BIN_OR .................................................................................................................. 441BIN_SHL ................................................................................................................. 441BIN_SHR ................................................................................................................ 442BIN_XOR ................................................................................................................ 442
Руководство по языку SQL СУБД Firebird 3.0
15
Функции для работы с UUID ....................................................................................... 442CHAR_TO_UUID .................................................................................................... 443GEN_UUID ............................................................................................................. 443UUID_TO_CHAR .................................................................................................... 444
Функции для работы с генераторами (последовательностями) .............................. 444GEN_ID .................................................................................................................. 445
Условные функции ....................................................................................................... 445COALESCE ............................................................................................................ 445DECODE ................................................................................................................ 446IIF ............................................................................................................................ 447MAXVALUE ............................................................................................................ 448MINVALUE ............................................................................................................. 449NULLIF ................................................................................................................... 450
Агрегатные функции ............................................................................................................ 450AVG ................................................................................................................................ 450COUNT ........................................................................................................................... 451LIST ................................................................................................................................ 452MAX ................................................................................................................................ 453MIN ................................................................................................................................. 454SUM ................................................................................................................................ 455Статистические функции ............................................................................................. 456
CORR ..................................................................................................................... 456COVAR_POP ......................................................................................................... 457COVAR_SAMP ....................................................................................................... 458STDDEV_POP ........................................................................................................ 459STDDEV_SAMP ..................................................................................................... 459VAR_POP ............................................................................................................... 460VAR_SAMP ............................................................................................................ 461
Функции линейной регрессии ...................................................................................... 462REGR_AVGX ......................................................................................................... 462REGR_AVGY ......................................................................................................... 463REGR_COUNT ....................................................................................................... 464REGR_INTERCEPT ............................................................................................... 464REGR_R2 ............................................................................................................... 465REGR_SLOPE ....................................................................................................... 466REGR_SXX ............................................................................................................ 466REGR_SXY ............................................................................................................ 467REGR_SYY ............................................................................................................ 468
Оконные (аналитические) функции .................................................................................... 468Агрегатные функции ..................................................................................................... 470Секционирование ......................................................................................................... 471Сортировка .................................................................................................................... 471Ранжирующие функции ................................................................................................ 472
DENSE_RANK ....................................................................................................... 473RANK ...................................................................................................................... 474ROW_NUMBER ..................................................................................................... 474
Навигационные функции ............................................................................................. 475FIRST_VALUE ..............................
Recommended