Возврат одиночного значения из хранимой процедуры
В настоящее время MySQL не позволяет возвращать значение из процедуры с помощью оператора RETURN, но есть несколько решений этой проблемы:
Преобразование процедуры в функцию
CREATE FUNCTION sp_existing_employee
(v_employee_name VARCHAR(128),
v_employee_id INTEGER)
RETURNS INT
BEGIN
IF(EXISTS(SELECT * FROM employees
WHERE employee_name = v_employee_name AND
employee_id = v_employee_id)) then
RETURN 0;
END IF;
RETURN 1;
END;
Затем вызовите процедуру:
SET status = sp_returnvalue(...)
or
SELECT sp_returnvalue(...) INTO status
Использование параметра OUT для возврата значения
CREATE PROCEDURE sp_existing_employee
(v_employee_name VARCHAR(128),
v_employee_id INTEGER,
INOUT status INT)
L_return:
BEGIN
IF(EXISTS(SELECT * FROM employees
WHERE employee_name = v_employee_name AND
employee_id = v_employee_id)) then
SET status = 0;
LEAVE L_return;
END IF;
SET status = 1;
END;
Использование набора результатов для возврата значения
CREATE FUNCTION sp_existing_employee
(v_employee_name VARCHAR(128),
v_employee_id INTEGER)
RETURNS INT
BEGIN
IF(EXISTS(SELECT * FROM employees
WHERE employee_name = v_employee_name AND
employee_id = v_employee_id)) then
SELECT 0;
RETURN;
END IF;
SELECT 1;
RETURN;
END;
Эквиваленты в других базах данных
| Database | Equivalent |
|---|---|
| SQL Server | RETURN statement allows specifying a return value |
Если у вас есть другие вопросы, пожалуйста, свяжитесь с нами: support@convertum.ru