Что такое хранимые процедуры в БД

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

Ответ

Хранимые процедуры — это предкомпилированные SQL-запросы, хранящиеся в базе данных. Они позволяют выполнять сложные операции на стороне сервера, уменьшая нагрузку на клиент и повышая безопасность.

Преимущества:

  • Повторное использование кода
  • Улучшенная производительность (кеширование плана выполнения)
  • Безопасность (ограничение прямого доступа к таблицам)

Пример (PostgreSQL):

CREATE OR REPLACE PROCEDURE transfer_funds(
    from_account INT,
    to_account INT,
    amount DECIMAL
)
LANGUAGE SQL
AS $$
    UPDATE accounts SET balance = balance - amount WHERE id = from_account;
    UPDATE accounts SET balance = balance + amount WHERE id = to_account;
$$;

В Go можно вызывать через database/sql:

_, err := db.Exec("CALL transfer_funds(?, ?, ?)", 1, 2, 100.0)

Недостатки: сложность отладки, привязка к конкретной СУБД.