Что такое процедура в контексте баз данных?

«Что такое процедура в контексте баз данных?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте баз данных хранимая процедура (Stored Procedure) — это предварительно скомпилированный и сохраненный на сервере БД набор SQL-операторов, который выполняется как единая программа.

Ключевые характеристики:

  • Хранится на сервере БД: Логика находится внутри самой СУБД (MySQL, PostgreSQL, MS SQL).
  • Выполняется на стороне сервера: Это снижает сетевой трафик, так как вместо отправки множества запросов приложение вызывает одну процедуру.
  • Может принимать параметры и возвращать результаты.
  • Повышает безопасность: Можно давать права на выполнение процедуры, не открывая прямой доступ к таблицам.

Пример создания и вызова в MySQL:

-- Создание процедуры
DELIMITER //
CREATE PROCEDURE GetUserOrders(IN userId INT)
BEGIN
    SELECT * FROM orders WHERE user_id = userId;
END //
DELIMITER ;

-- Вызов процедуры из приложения
CALL GetUserOrders(123);

Плюсы: Производительность для сложных операций, централизация бизнес-логики, безопасность. Минусы: Привязка логики к конкретной СУБД (сложность миграции), трудности отладки и тестирования по сравнению с кодом приложения.