Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con procedimiento con cursor

Estas en el tema de Problemas con procedimiento con cursor en el foro de Mysql en Foros del Web. Muy buenas, tengo problemas para hacer un procedimiento y queria ver si me podeis echar una mano. Quiero que insertando el genero de un libro ...
  #1 (permalink)  
Antiguo 21/06/2012, 16:33
Avatar de migue1891  
Fecha de Ingreso: enero-2012
Mensajes: 50
Antigüedad: 12 años, 3 meses
Puntos: 0
Problemas con procedimiento con cursor

Muy buenas, tengo problemas para hacer un procedimiento y queria ver si me podeis echar una mano.

Quiero que insertando el genero de un libro me de los datos del titulo el autor(nombre y apellido), año de publicacion, nacionalidad del autor, y que estos datos me los Inserte en una tabla que tengo para mostrar los datos.

Esta es la relacion de las tablas:

Libros (id_libro, titulo, apubli, id_genero)
autor (id_autor, nombre apellido, nacionalidad)
libroautor (id_libro, id_autor)
genero (id_genero, nombre)

cursorGenero(titulo, nombre y apellido autor, apubli, nacionalidad)

y ese es el procedimiento que he creado.

Código SQL:
Ver original
  1. CREATE PROCEDURE buscarPorGenero (p_genero VARCHAR(30))
  2.  
  3. BEGIN
  4.  
  5. DECLARE curGenero CURSOR FOR
  6.  
  7. SELECT Libros.titulo, autor.nombre, autor.apellido, Libros.apubli, autor.nacionalidad
  8. FROM (Libros INNER JOIN libroautor ON Libros.id_libro=libroautor.id_libro)
  9.  INNER JOIN autor ON libroautor.id_autor=autor.id_autor
  10. WHERE Libros.id_genero = (SELECT id_genero
  11. FROM genero WHERE nombre=p_genero);
  12.  
  13. DECLARE v_titulo VARCHAR(150)
  14. DECLARE v_nombre VARCHAR(60)
  15. DECLARE v_apellido VARCHAR(60);
  16. DECLARE v_apubli INT(4);
  17. DECLARE v_nacionalidad VARCHAR(60);
  18.  
  19. OPEN curGenero; curGenero_loop: LOOP
  20.     FETCH curGenero INTO v_titulo, v_nombre, v_apellido, v_apubli, v_nacionalidad;
  21.     INSERT INTO cursorGenero VALUES (v_nombre, v_apellido, v_apubli, v_nacionalidad);
  22.  
  23. END LOOP curGenero_loop;
  24.  
  25. SELECT * FROM cursorGenero;
  26.  
  27. CLOSE curGenero;
  28.  
  29. END buscarPorGenero;

Cualquier ayuda la agradecere enormemente ya que estoy bastante apurado con este tema. Un saludo y Muchas gracias.

Última edición por migue1891; 21/06/2012 a las 16:38
  #2 (permalink)  
Antiguo 22/06/2012, 14:33
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Problemas con procedimiento con cursor

Hola migue1891,

Pienso que no es necesario el cursor.

Lo que necesitas lo puedes obtener con un:

Código MySQL:
Ver original
  1. INSERT INTO cursorGenero SELECT...

Etiquetas: cursor, join, procedimiento, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:01.