Вопрос17
Осталось:

Что такое хранимая процедура и как она отличается от функции?

Образцовый ответ

Показывать ответ по умолчанию

Хранимая процедура (Stored Procedure):

  • Набор SQL-команд, сохраненных на сервере для повторного использования.
  • Может выполнять операции SELECT, INSERT, UPDATE, DELETE.
  • Может возвращать несколько наборов результатов или ничего не возвращать.
  • Может иметь входные и выходные параметры.
  • Не может быть вызвана внутри SQL-запроса.

Пример хранимой процедуры:

MySQL
CREATE PROCEDURE GetEmployeeByID(IN emp_id INT)
BEGIN
    SELECT * FROM employees WHERE id = emp_id;
END;

Вызов процедуры:

MySQL
CALL GetEmployeeByID(1);

Функция (Function):

  • Возвращает одно значение (скалярная функция) или таблицу (табличная функция).
  • Может использоваться в SQL-выражениях (например, в SELECT или WHERE).
  • Должна возвращать значение.
  • Обычно используется для вычислений и возвращает детерминированный результат.

Пример функции:

MySQL
CREATE FUNCTION GetEmployeeSalary(emp_id INT) RETURNS DECIMAL(10,2)
BEGIN
    DECLARE salary DECIMAL(10,2);
    SELECT e.salary INTO salary FROM employees e WHERE e.id = emp_id;
    RETURN salary;
END;

Использование функции:

MySQL
SELECT name, GetEmployeeSalary(id) FROM employees;