MySQL - Duda - devolver valores desde un Stored Procedure

   
Vista:

Duda - devolver valores desde un Stored Procedure

Publicado por Angel De la Cruz angel_Stan@hotmail.com (7 intervenciones) el 10/07/2014 08:39:00
Que tal, estoy empezando con los SP, ya me lei a parte de mysql d la pagina, y me quedo una duda,

al crear un sp si el resultado te devuelve mas de un valor, cual es la forma de retornalos todos??

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Willian

Duda - devolver valores desde un Stored Procedure

Publicado por Willian (51 intervenciones) el 11/07/2014 13:56:25
Mysql solo te devolvera un valor, si queres devolver mas de un valor tendras que hacer otro pr para recuperar el otro valor, o hay otra forma tambien pero se necesita un poco de atencion, podes usar una variable de tipo Instancia,
se declara asi
@nombre_mi_variable = 0; -- este va a ser numerica
@nombre_mi_variable = ''; -- este va a ser string

luego podes acceder al valor de esa variable en cualquier procedimiento, select, Etc.
SELECT @nombre_mi_variable;

Saludos

P.S: la variable estara disponible mientras dure la conexion del usuario, una vez que se desconecta desaparece todo lo declarado con ese tipo de variable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda - devolver valores desde un Stored Procedure

Publicado por Angel De la Cruz (7 intervenciones) el 12/07/2014 02:49:17
Entonces, es decir que los SP se limitan a un solo resultado, ya que he tenido que agregar limit a la consulta por el tipo de valores que me regresaban, a menos que use lo que me recomendaste. Entonces digamos, que beneficios tiene el usar un SP a usar una consulta. Poderlo mandar llamar cuando quiera?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda - devolver valores desde un Stored Procedure

Publicado por Leopoldo Taylhardat (43 intervenciones) el 12/07/2014 15:44:22
Saludos...

No estoy seguro de que en MYSQL sea así, pero entros bases de datos (doy fé que en Sybase sí), puedes devolver en procedures N valores, donde devuelves un solo valor es con una función...

Función:
create function...
returns integer
begin
declare a integer;
select aaa into a from xxxx;
return(a);
end
Procedure:
create procedure...
begin
declare a integer;
declare b varchar(12);
select aaa,bbb into a, b from xxxx;
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

Duda - devolver valores desde un Stored Procedure

Publicado por Willian (51 intervenciones) el 12/07/2014 18:54:47
Mil perdon me equivoque , el SP si devuelve N cantidad de valores, las Functions si retornan un solo valor....
Si en un SP deseas devolver N cantidad podes hacer de la siguiente forma
supongamos que hayas declarado las 3 variables siguientes
"valor1, valor2, valor3"

entonces en el SP las cargas con algun calculo que deseas

luego las podes devolver en un select


SELECT valor1, valor2, valor3;

este nada mas es un ejemplo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda - devolver valores desde un Stored Procedure

Publicado por Angel De la Cruz angel_stan@hotmail.com (7 intervenciones) el 14/07/2014 20:24:10
Que tal, estoy haciendo la duda de los sp, aqui esta el codigo:

DELIMITER $$

CREATE

PROCEDURE `mysql`.`tes1`()
BEGIN
DECLARE a INTEGER;
DECLARE b VARCHAR(50);
SELECT id, nombre INTO a, b FROM angel;
END$$

DELIMITER ;

y al querer llamar el procedimiento con CALL me sale esto

Result consisted of more than one row

Esto es lo que quiero combatir y siempre tengo que ponerle limit.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

Duda - devolver valores desde un Stored Procedure

Publicado por Willian (51 intervenciones) el 14/07/2014 20:27:23
Esta obvio el problema Angel
no podes asignar mas de una linea a la misma variable como lo estas haciendo,
SELECT id, nombre INTO a, b FROM angel;----
si queres hacer eso tendras que formar un Cursor y trabajar con cada linea..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda - devolver valores desde un Stored Procedure

Publicado por Angel De la Cruz angel_stan@hotmail.com (7 intervenciones) el 14/07/2014 22:09:32
De hecho esa era la duda inicial de mi consulta, me explique mal.

Entonces, siempre tendré que poner limit para que me devuelva solo una linea si no deseo trabajarlo linea por linea (cursor).

Entonces, en el ejemplo anterior de declare a, declare b, para que sirve hacer el:

SELECT id, nombre INTO a, b FROM angel;

ya que al momento de hacer select a,b, no la reconoce como columnas en la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda - devolver valores desde un Stored Procedure

Publicado por Angel De la Cruz angel_stan@hotmail.com (7 intervenciones) el 14/07/2014 21:03:21
Y eso es a lo que me refiero, por ejemplo si en el realizo un select y ese select me da mas valores, digamos 3, me aparece ese error, tengo que poner limit a 1, en si no hay una forma de mostrar esos valores retornados por el select??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

Duda - devolver valores desde un Stored Procedure

Publicado por Willian (51 intervenciones) el 14/07/2014 22:40:41
si hay tenes que interactuar con un cursor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar