Je ne trouve cette réponse nulle part, mais pouvez-vous appeler une procédure stockée à partir d'une autre procédure stockée dans MySQL? Je veux récupérer la valeur d'identité et l'utiliser dans la procédure stockée parent. Nous ne pouvons plus utiliser les FONCTIONS!
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
Les paramètres devraient vous aider à récupérer les valeurs dans la procédure d'appel. En fonction de cela, la solution doit être quelque chose comme ça.
Pour appeler une autre procédure, utilisez [[# # ~] appelez [~ # ~] : ex: Call SP1(parm1, parm2);
Pour obtenir l'identité, avez-vous essayé de vérifier LAST_INSERT_ID () ; Vous feriez quelque chose comme SELECT LAST_INSERT_ID()
après votre appel SP.
Voici un exemple complet et testé:
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;