No puedo encontrar esta respuesta en ningún lado, pero ¿puede llamar a un procedimiento almacenado de otro procedimiento almacenado en MySQL? Quiero recuperar el valor de identidad y usarlo en el procedimiento almacenado principal. ¡Ya no podemos usar FUNCIONES!Llamar a un procedimiento almacenado en un procedimiento almacenado en MySQL
Respuesta
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
parámetros que deben ayudar a obtener los valores de nuevo a la llamada procedure.Based en que la solución debe ser algo como esto.
Para llamar a otro procedimiento, utilice CALL: ejemplo: Call SP1(parm1, parm2);
Para obtener la identidad, ¿trató de retirar LAST_INSERT_ID(); Haría algo como SELECT LAST_INSERT_ID()
después de su llamada al SP.
Aquí hay una, ejemplo probado completo:
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;
Está utilizando LAST_INSERT_ID(), ¿cree que esto es mejor que hacerlo? –
@Mike El parámetro Flynn-OUT no es realmente necesario, puede obtener la última identificación insertada simplemente llamando a seleccionar last_insert_id(). – dcp
¿Qué sucede si deseo devolver la ÚLTIMA IDENTIFICACIÓN INSERTADA o recuperarla si está disponible en la misma función? –
- 1. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 2. Llamar a un procedimiento almacenado con asp.net
- 3. Llamar a un procedimiento almacenado python
- 4. ¿Cómo editas un procedimiento almacenado en MySQL?
- 5. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 6. Cómo llamar a un procedimiento almacenado (con parámetros) desde otro procedimiento almacenado sin tabla temporal
- 7. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 8. Llamar a un procedimiento almacenado de Oracle en Squirrel SQL
- 9. Llamar a un procedimiento almacenado con otro en Oracle
- 10. Cómo llamar a una función escalar en un procedimiento almacenado
- 11. Llamar a un procedimiento almacenado en SQL CTE
- 12. Pasar matriz a un procedimiento almacenado
- 13. Cómo guardar un procedimiento almacenado?
- 14. ¿Cómo programar un procedimiento almacenado?
- 15. Ejecución del procedimiento almacenado sincronizado en mysql
- 16. MySQL: IF en el procedimiento almacenado
- 17. ¿Puedo llamar a un procedimiento almacenado con criterios de hibernación?
- 18. Procedimiento almacenado asincrónico Llamadas
- 19. Llamar a un procedimiento almacenado con XML Datatype
- 20. Llamar a procedimiento almacenado de otro SQL procedimiento almacenado del servidor
- 21. Pasar datatable a un procedimiento almacenado
- 22. Llamar al procedimiento almacenado con los parámetros
- 23. Seleccionar y actualizar en un procedimiento almacenado
- 24. ¿Cómo llamar al procedimiento almacenado por hibernación?
- 25. ¿Cómo elimino un procedimiento almacenado en postgresql?
- 26. ¿Cómo selecciono un procedimiento almacenado en Sybase?
- 27. ¿Cómo llamar al procedimiento almacenado de MySQL desde Rails?
- 28. Cómo simular una impresión en un procedimiento almacenado de MySQL
- 29. Suprimir transacción en procedimiento almacenado
- 30. Magento: Crear procedimiento almacenado
Estás usando, ¿crees que esto es mejor que hacer LAST_INSERT_ID()? –
Si fuera una función, devolverá LAST_INSERT_ID de la función como VALOR DEVUELTO. Esta solución debe proporcionar la misma para que el PROCEDIMIENTO sea equivalente a la función –
. La otra respuesta dice que puedo usar LAST_INSERT_ID() sin OUT? –