Ответ
Хранимые процедуры — это предкомпилированные 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)
Недостатки: сложность отладки, привязка к конкретной СУБД.