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

como se declara una variable de una fila de la tabla ?

Estas en el tema de como se declara una variable de una fila de la tabla ? en el foro de Mysql en Foros del Web. Con el comando 'fetch el_nombre_del_cursor into fila' quiero que el valor que tengo en cada vuelta en el_nombre_del_cursor asigne a la variable fila, pero como ...
  #1 (permalink)  
Antiguo 07/10/2009, 04:26
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
como se declara una variable de una fila de la tabla ?

Con el comando 'fetch el_nombre_del_cursor into fila' quiero que el valor que tengo en cada vuelta en el_nombre_del_cursor asigne a la variable fila, pero como declaro esta variable ?
El cursor 'el_nombre_del_cursor' esta definida:
DECLARE el_nombre_del_cursor CURSOR FOR SELECT campo,funcion FROM X.tabla1;
Espero que me hayais entendido.Gracias.
  #2 (permalink)  
Antiguo 07/10/2009, 05:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como se declara una variable de una fila de la tabla ?

te conviene darle un repaso al manual de referencia, respecto a la sintaxis de los procedimientos almacenados: 19.2. Sintaxis de procedimientos almacenados, y más específicamente, 19.2.9. Variables en procedimientos almacenados

La única nota que no vas a encontrar en esto muy claramente es que toda variable o cursor se debe declarar antes de declarar los HANDLER.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/10/2009, 05:26
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

Hola una vez más gnzsoloyo,
Sigo sin encontrar mi duda, creo que no me he explicado como es debido.
Para declarar una sola variable o un conjunto de variables de mismo tipo no tengo ningún problema pero quiero guardar en una variable toda una fila de una tabla. Esto es posible ?
Gracias.
  #4 (permalink)  
Antiguo 07/10/2009, 05:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como se declara una variable de una fila de la tabla ?

No. En MySQL no existen datos de tipo FIELD o RECORD.
Infortunadamente, si lo que quieres es recoger para procesar todos los campos de una tabla, deberás declarar tantas variables como campos se declaran en el SELECT.

Por otro lado, habría que er si ese modelo de trabajo es el que te conviene para el caso que te ocupa.
¿QUé tarea debes hacer dentro del loop?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/10/2009, 07:57
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

Otra pregunta,
quiero tener un bucle que le pasemos un cursor pero este cursor sea variable dependiendo de otro valor exterior.
DECLARE c1 cursor for SELECT id,timestamp from employers where x= valor;

bucle
set valor = cambia_valor();//este es el encargado de asignar el valor nuevo.
open c1;
c1_loop: LOOP
fetch c1 into uid,newdate;
....
END LOOP c1_loop;
close c1;
end bucle;

Este es el caso que quiero hacer ahor me falta escribir como es debido, alguien sabe ?
  #6 (permalink)  
Antiguo 07/10/2009, 08:46
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

Otra pregunta,
¿se puede llamar a un open dentro de otro open?. Cuando hago referencia al open estoy hablando al comando para abrir el cursor.
Gracias.
  #7 (permalink)  
Antiguo 07/10/2009, 09:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como se declara una variable de una fila de la tabla ?

Si, en tanto sean cursores distintos.
Yo lo he hecho con OPEN consecutivos, pero hay que tener mucho cuidado con la secuencia y las operaciones de lectura.

En general, rara vez uso los cursores, porque muchas tareas de los cursores las puedo trasladar a consultas y tablas temporales, que me resultan más eficientes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/10/2009, 16:39
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

DECLARE CONTINUE HANDLER FOR NOT FOUND SET @termina_bucle=1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @termina_bucle_v=1;

SET @termina_bucle = 0;
OPEN coches;
bucle:WHILE(@termina_bucle=0) DO
FETCH coches INTO id_coche;
IF @termina_bucle=1 THEN
LEAVE bucle;
END IF;
.....
SET @termina_bucle_v = 0;
OPEN personas;
bucle_v:WHILE(@termina_bucle_v=0) DO
FETCH vuelos INTO id_persona,nombre,edad;
IF @termina_bucle_v=1 THEN
LEAVE bucle;
END IF;
......
END WHILE bucle_v;
CLOSE personas;
........
END WHILE bucle;
CLOSE coches;

Algo así estaría bien ?
Gracias.
  #9 (permalink)  
Antiguo 08/10/2009, 01:18
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

El compilador me dice :
Script line: 3 Duplicate handler declared in the same block

Eso significa que no puedo declarar dos handler en el mismo fichero, como lo hago entonces ?
  #10 (permalink)  
Antiguo 08/10/2009, 01:41
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como se declara una variable de una fila de la tabla ?

He encontrado la solución:
http://rpbouman.blogspot.com/2005/10...sor-loops.html
Ahora me falta que alguién me responda a la pregunta planteada en el punto #5.
Gracias a todos.
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 00:26.