Разница между скалярной и табличной функцией в SQL

Функции в 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 BYFROM, JOIN
ПроизводительностьМедленнее при больших объемахОптимизирована для больших данных
Поддержка многооператорностиДаТолько в многооператорных функциях