Назад к вопросам
ГК Иннотех
Middle
10
В чём отличие функции от хранимой процедуры в БД?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Функция и хранимая процедура в базе данных отличаются по нескольким ключевым аспектам:
- Возвращаемое значение: Функция всегда возвращает значение (скалярное, таблицу или другой тип), тогда как процедура может ничего не возвращать или возвращать несколько выходных параметров.
- Использование в запросах: Функции можно использовать внутри SQL-запросов (например, в SELECT, WHERE), а процедуры вызываются отдельно командой EXECUTE или CALL.
- Побочные эффекты: Процедуры могут изменять состояние базы (выполнять INSERT, UPDATE, DELETE), функции обычно должны быть детерминированными и не изменять данные (в некоторых СУБД это ограничение).
- Параметры: Процедуры могут иметь входные, выходные и входно-выходные параметры, функции — только входные.
Пример функции в SQL:
CREATE FUNCTION GetTotalPrice(@OrderId INT) RETURNS DECIMAL(10,2) AS
BEGIN
DECLARE @Total DECIMAL(10,2);
SELECT @Total = SUM(Price * Quantity) FROM OrderDetails WHERE OrderId = @OrderId;
RETURN @Total;
END
Пример процедуры:
CREATE PROCEDURE UpdateOrderStatus @OrderId INT, @Status VARCHAR(20) AS
BEGIN
UPDATE Orders SET Status = @Status WHERE Id = @OrderId;
END