MySQL - Procedure con cursor

   
Vista:

Procedure con cursor

Publicado por Jaime Castillo Montes (9 intervenciones) el 29/05/2008 08:21:57
Hola a todo el mundo
antes tenia problemas para guarda mis procedures
ahora ya puedo gracias a su valiosa ayuda que recibi anteriormente
pero e tenido otro problema, estoy creando un procedure que me devuelva todos los registros de una tabla, y al momento de correrlo me marca un error, diciendo que se esperaban un parametro :S, y no recibe nada de entrada, solo da salida a los datos, espero me puedan ayudar, el codigo es este:

DELIMITER $$

DROP PROCEDURE IF EXISTS prueba $$
CREATE PROCEDURE prueba(out nom varchar(50), out edad int)
begin
declare nom varchar(50);
declare edad int;
declare c1 cursor for select * from empleados;
open c1;
fetch c1 into nom, edad;
end $$

DELIMITER ;

mucas gracias a todos
lo que kiero lograr como lo dije antes, es que este procedure me regrese todos los registro de la tabla
gracias de nuevo
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

RE:Procedure con cursor

Publicado por Gonzalo GC (339 intervenciones) el 29/05/2008 17:24:40
¿Y para qué estás usando un cursor si lo que quieres es que te devuelva el contenido dedos campos de TODOS los registros de la tabla?

Para eso simplemente deberías leer esa tabla. No trazarla.

Un cursor solamente tiene sentido si vas a leer registro a registro una tabla para hacer algo con cada uno de ellos, con lo que debes hacer un loop para ello. El fetch solamente hace que el puntero de registros se mueva un lugar, o sea que en realidad al ejecutar el SP leíste el primer registro y el cursor quedó apuntando al segundo, pero no leíste ninguno más.

Además, ¿estás seguro que esa tabla tiene solamente dos campos? ¿o tiene más?

Si tiene dos campos, el SELECT * funcionaría bien, pero sino tienes que poner tantas variables como campos tenga la tabla, ya que no le estás indicando que solamente te lea esos dos.
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

RE:Procedure con cursor

Publicado por Jaime Castillo Montes (9 intervenciones) el 29/05/2008 19:13:23
hola gonzalo
pos si, lo que kiero es que el store procedure me devuelva todos los registros
no are otra cosa con ellos mas que leerlos, y use el cursor por que cuando hago sp en oracle, asi los defino cuando ai que devolver todos los registros
me imagine que podria ser algo parecido
si me puedes echar la mano porfa
solo kiero devolver todos los registros para pintar un reporte.
en estos momentos solo estoy asiendo pruebas, ya despues la tabla estara completa por el momento solo tiene esos dos campos

gracias


DELIMITER $$

DROP PROCEDURE IF EXISTS prueba $$
CREATE PROCEDURE prueba(out nom varchar(50), out edad int)
begin
declare nom varchar(50);
declare edad int;
select * from empleados;
end $$

DELIMITER ;

asi estaria bien??
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

RE:Procedure con cursor

Publicado por Jaime Castillo Montes (9 intervenciones) el 29/05/2008 19:30:38
se me olvido el into

DELIMITER $$

DROP PROCEDURE IF EXISTS prueba $$
CREATE PROCEDURE prueba(out nom varchar(50), out edad int)
begin
declare nom varchar(50);
declare edad int;
select * into nom, edad from empleados;
end $$

DELIMITER ;
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

RE:Procedure con cursor

Publicado por victor perez (1 intervención) el 21/07/2008 17:24:48
y como quedo la solucion? estoy en el mismo caso pero no encuentro la solucion
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