Подтвердить что ты не робот

Вызов хранимой процедуры в хранимой процедуре в MySQL

Я не могу найти этот ответ в любом месте, но можете ли вы вызвать хранимую процедуру из другой хранимой процедуры в MySQL? Я хочу вернуть значение Identity и использовать его в родительской хранимой процедуре. Мы больше не можем использовать FUNCTIONS!

4b9b3361

Ответ 1

CREATE PROCEDURE innerproc(OUT param1 INT)
BEGIN
 insert into sometable;
 SELECT LAST_INSERT_ID() into param1 ;
END
-----------------------------------
CREATE PROCEDURE outerproc()
BEGIN
CALL innerproc(@a);
// @a gives you the result of innerproc
SELECT @a INTO variableinouterproc FROM dual;
END
Параметры

OUT должны помочь вам вернуть значения вызывающей процедуре. Основываясь на том, что решение должно быть примерно таким.

Ответ 2

Чтобы вызвать другую процедуру, используйте CALL: ex: Call SP1(parm1, parm2);

Чтобы получить личность, попробовали ли вы проверить LAST_INSERT_ID(); После вызова SP вы сделаете что-то вроде SELECT LAST_INSERT_ID().

Здесь приведен полный пример:

DELIMITER $$

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) $$

CREATE PROCEDURE sp1()
BEGIN
  insert into animals (name) values ('bear');
END $$

CREATE PROCEDURE sp2()
BEGIN
  call sp1;
  select last_insert_id();
END $$

call sp2;