Ответ
В SQL-базах данных (PostgreSQL, MySQL, MS SQL) есть несколько типов объектов, хранящих предопределенный код:
1. Хранимые процедуры (Stored Procedures)
- Наиболее распространенный объект. Содержит последовательность SQL-операторов.
- Может принимать входные параметры, выполнять сложную бизнес-логику на стороне БД.
- Не обязана возвращать значение (может модифицировать данные).
-
Пример (PostgreSQL):
CREATE OR REPLACE PROCEDURE archive_old_orders(cutoff_date DATE) LANGUAGE plpgsql AS $$ BEGIN INSERT INTO orders_archive SELECT * FROM orders WHERE order_date < cutoff_date; DELETE FROM orders WHERE order_date < cutoff_date; COMMIT; END; $$; -- Вызов CALL archive_old_orders('2023-01-01');
2. Пользовательские функции (User-Defined Functions)
- Обязаны возвращать значение (скалярное или табличное).
- Могут использоваться внутри SQL-запросов как часть выражений.
-
Пример скалярной функции:
CREATE FUNCTION get_total_sales(employee_id INT) RETURNS DECIMAL AS $$ BEGIN RETURN (SELECT SUM(amount) FROM sales WHERE emp_id = employee_id); END; $$ LANGUAGE plpgsql; -- Использование в запросе SELECT name, get_total_sales(id) FROM employees;
3. Триггеры (Triggers)
- Специальный вид хранимой процедуры, которая автоматически выполняется при наступлении определенного события (
INSERT,UPDATE,DELETE) с таблицей. - Часто используются для аудита, поддержания целостности данных.
4. Представления (Views) и Материализованные представления (Materialized Views)
- View: Виртуальная таблица, определяемая SQL-запросом. Код запроса хранится в БД.
- Materialized View: Физически сохраняет результат запроса, который можно обновлять. Содержит и код запроса, и данные.