Функции в SQL позволяют инкапсулировать вычисления и повторно использовать код. Они делятся на скалярные и табличные функции, каждая из которых имеет свои особенности и область применения.
Скалярные функции
Скалярная функция возвращает одно значение для каждого вызова. Она принимает входные параметры и выполняет вычисления, возвращая одно результирующее значение.
CREATE FUNCTION get_employee_age(@birthdate DATE)
RETURNS INT
AS
BEGIN
RETURN DATEDIFF(YEAR, @birthdate, GETDATE());
END;
Особенности скалярных функций:
- Возвращают одно значение.
- Могут использоваться в
SELECT
,WHERE
,ORDER BY
. - Поддерживают вычисления и преобразования данных.
Табличные функции
Табличная функция возвращает набор строк, аналогичный таблице. Она может быть встроенной (inline) или многооператорной (multi-statement).
CREATE FUNCTION get_active_employees()
RETURNS TABLE
AS
RETURN (
SELECT id, name, department FROM employees WHERE status = 'active'
);
Особенности табличных функций:
- Возвращают таблицу данных.
- Используются в
FROM
,JOIN
. - Позволяют структурировать сложную логику выборки.
Сравнение скалярных и табличных функций
Характеристика | Скалярная функция | Табличная функция |
---|---|---|
Возвращаемый тип | Одно значение | Таблица |
Использование | SELECT , WHERE , ORDER BY | FROM , JOIN |
Производительность | Медленнее при больших объемах | Оптимизирована для больших данных |
Поддержка многооператорности | Да | Только в многооператорных функциях |