Функции в PostgreSQL позволяют автоматизировать выполнение операций, упрощая работу с базой данных. Они могут возвращать данные, изменять таблицы и выполнять другие действия.
Синтаксис
Для создания функции используется команда CREATE FUNCTION
или CREATE OR REPLACE FUNCTION
. Второй вариант позволяет обновлять функцию без её удаления:
CREATE OR REPLACE FUNCTION имя_функции(параметры)
RETURNS возвращаемый_тип
LANGUAGE язык
AS $$
тело_функции
$$;
Основные элементы функции:
- имя_функции — название функции.
- параметры — входные данные.
- возвращаемый_тип — тип данных, который вернёт функция.
- язык — язык программирования.
- тело_функции — код, который выполняется при вызове функции.
Пример создания функции
Функция, которая складывает два числа:
CREATE FUNCTION add_numbers(_a integer, _b integer)
RETURNS integer
LANGUAGE plpgsql
AS $$
BEGIN
RETURN _a + _b;
END;
$$;
Вызов функции:
SELECT add_numbers(5, 10);
Функции для изменения данных
Функции могут добавлять, изменять и удалять записи в таблицах. Пример вставки новой строки:
CREATE FUNCTION add_employee(_name text, _age integer)
RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO employees (name, age) VALUES (_name, _age);
END;
$$;
Функции, возвращающие таблицу
Функция может возвращать набор данных:
CREATE FUNCTION get_employees()
RETURNS TABLE(id integer, name text, age integer)
LANGUAGE sql
AS $$
SELECT employees.id, employees.name, employees.age FROM employees;
$$;
Вызов функции:
SELECT * FROM get_employees();