Firebird 2.0 - ROLLBACK RETAIN - Откат транзакции с сохранением состояния
ROLLBACK RETAIN – откатывает транзакцию на момент последнего вызова COMMIT RETAIN или на момент старта транзакции.
Firebird 2.0 - Инструкция EXECUTE BLOCK
EXECUTE BLOCK - позволяет выполнить блок инструкций на стороне сервера. Пример:
EXECUTE BLOCK (X INTEGER = :X)
RETURNS (Y INTEGER)
AS
BEGIN
Y = X * 2;
SUSPEND;
END
Firebird 2.0 - INSERT RETURNING - Возврат значений после вставки.
В Firebird 2.0 появилось дополнение RETURNING к команде INSERT позволяет выполнить вставку и прочитать добавленные значения. Очень удобно получать значение ID-поля записи, для которого использовался генератор:
insert into sample (ID, data)
values(GEN_ID(sample_generator,1),:data)
RETURNING ID
RETURNING для остальных операций появился только в следующих версиях Firebird, начиная с
Firebird 2.1: UPDATE … RETURNING, INSERT OR UPDATE … RETURNING, DELETE … RETURNING
Firebird 2.0 - Производные таблицы – именованные наборы данных
Производные таблицы (Derived tables) - это именованные наборы, основанные на выборке SELECT. Пример именованной выборки:
select * from
(select EMP_NO, FIRST_NAME ' ' LAST_NAME from employee)
as EMPLOYEE_DERIVED_TABLE (ID, FULL_NAME)
Развитием производных таблиц
Firebird 2.0 стали CTE (COMMON TABLE EXPRESSIONS) - общие табличные выраженияв Firebird 2.1 .
В отличии от производных таблиц, CTE позволяют писать более сложные запросы, в том числе и
рекурсивные!
Firebird 2.0 - Инструкция ROWS - Альтернатива FIRST/SKIP
ROWS - позволяет указать количество обрабатываемых записей. Может быть использовано любых подзапросах, в UNION, в командах UPDATE и DELETE. Пример постраничного вывода:
select * from customer rows 50 to 100
Firebird 2.0 - добавлено IIF - условие
Возможна более короткая запись условия в запросе:
SELECT IIF(VAL > 0, VAL, -VAL) FROM OPERATION
Взамен:
CASE
WHEN THEN
ELSE
END
Firebird 2.0 - функция CAST - Приведение типов.
Позволяет сообщить серверу
firebird 2.0 о типе преобразуемого параметра:
SELECT CAST(? AS INT) FROM RDB$DATABASE
Firebird 2.0 - Улучшенная функция SUBSTRING
Функция substring может принимать выражения, подзапросы, вложенные функции в качестве 2-го и третьего параметров:
x = varchar(50);
substring(x from 1 for 1);
Firebird 2.0 - Новые контекстные переменные
CURRENT_TIME and CURRENT_TIMESTAMP
опциаонально позволяют получать время с секундами:
1. SELECT CURRENT_TIME FROM RDB$DATABASE;
2. SELECT CURRENT_TIME(3) FROM RDB$DATABASE;
3. SELECT CURRENT_TIMESTAMP(3) FROM RDB$DATABASE;
Firebird 2.0 - GROUP BY может быть выражением
GROUP BY
SUBSTRING(CAST((A * B) / 2 AS VARCHAR(15)) FROM 1 FOR 2)
Firebird 2.0 - Поддержка индекса колонки в ORDER BY для запроса SELECT *
SELECT * FROM … ORDER BY 9
Firebird 2.0 - оператор NEXT VALUE FOR – Синоним GEN_ID
INSERT INTO EMPLOYEE (ID, NAME)
VALUES (NEXT VALUE FOR S_EMPLOYEE, 'Vasya Pupkin');
Кроме того:
- Улучшения при работе с NULL.
- Поддержка CROSS JOIN.
- Поддержка ROWS, PLAN и ORDER BY в операторах UPDATE и DELETE.
- Функции для работы с контекстными переменными: RDB$GET_CONTEXT и RDB$SET_CONTEXT.
- Поддержка псевдонимов колонок в условиях ORDER BY и GROUP BY.
- Предопределенные пространства имен USER_SESSION, USER_TRANSACTION, SYSTEM.
Комментариев нет:
Отправить комментарий