procedimientos procedimiento ejercicios ejemplos ejecutar crear buscar almacenados almacenado mysql select stored-procedures stored-functions

ejercicios - Cómo usar la salida de la tabla del procedimiento MYSQL almacenado



procedimientos almacenados mysql pdf (1)

He estado buscando la última hora más o menos y no he encontrado una respuesta concluyente a este problema aparentemente simple:

¿Cómo se llama a una función / procedimiento MYSQL almacenado y se usa su salida en otras consultas SELECT?

Aunque esto obviamente no funciona, este es el tipo de cosas que me gustaría tener:

SELECT P.`id` FROM (CALL test_proc()) AS P

Donde test_proc () se define por:

DROP PROCEDURE IF EXISTS test_proc; DELIMITER ;; CREATE PROCEDURE test_proc() BEGIN SELECT * FROM `table`; END;; DELIMITER ;

Solo como un ejemplo. Estaría bien con el uso de una función almacenada también.


Esto no se puede hacer, directamente, porque la salida de una selección ilimitada en un procedimiento almacenado es un conjunto de resultados enviado al cliente, pero no técnicamente una tabla.

La solución es permitir que el proceso coloque los datos en una tabla temporal después de crear la tabla por usted. Esta tabla estará disponible solo para su conexión cuando finalice el procedimiento. No causará un conflicto si otra persona ejecuta el proceso al mismo tiempo y no será visible a ninguna otra conexión.

Agregue esto al procedimiento:

DROP TEMPORARY TABLE IF EXISTS foo; CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;

Cuando termine su procedimiento, SELECT * FROM foo; te dará lo que habrías obtenido del proc. Puedes unirte a ella casi como cualquier mesa.

Cuando haya terminado, suéltelo o desaparecerá por sí solo cuando se desconecte. Si ejecuta el proc nuevamente, se eliminará y se volverá a crear.