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

Asignar query a una variable

Estas en el tema de Asignar query a una variable en el foro de Mysql en Foros del Web. Hola amigos del foro, ¿Como puedo asignar el resultado de una consulta a una variable, para luego poder usarla en un procedimiento o function? He ...
  #1 (permalink)  
Antiguo 26/03/2012, 11:15
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Asignar query a una variable

Hola amigos del foro, ¿Como puedo asignar el resultado de una consulta a una variable, para luego poder usarla en un procedimiento o function?

He intentado por horas, y lo siguiente es lo que mas se aproxima porque no me da error pero el resultado es 0:

(cTbImporte es una variable que contiene el nombre de una tabla temporal)

SET @tDebe:=0 ;

SET @tdebe:= (SELECT SUM(debe) FROM " + cTbImporte + " WHERE debe <> 0) ;
SELECT SUM(debe) INTO @tDebe FROM " + cTbImporte + " WHERE debe <> '0' ;
SELECT @tDebe:= @tDebe+SUM(debe) FROM " + cTbImporte + " WHERE debe <> '0' ;

¿Pueden ayudarme?
Saludos.

Última edición por falegria230349; 26/03/2012 a las 12:11
  #2 (permalink)  
Antiguo 26/03/2012, 12:25
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Asignar query a una variable

Hola falegria230349:

Si estás trabajando con consultas dinámicas tienes que investigar acerca del SENTENCIAS PREPARADAS...

http://dev.mysql.com/doc/refman/5.0/es/sqlps.html

En cuanto a la asignación del resultado de una consulta a alguna variable lo puedes hacer con la palabra reservara INTO:

Código MySQL:
Ver original
  1. mysql> SET @total := 0;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> SELECT @total;
  5. +--------+
  6. | @total |
  7. +--------+
  8. |      0 |
  9. +--------+
  10. 1 row in set (0.00 sec)
  11.  
  12. mysql> SELECT SUM(campo) INTO @total FROM tabla;
  13. Query OK, 1 row affected (0.00 sec)
  14.  
  15. mysql> SELECT @total;
  16. +--------+
  17. | @total |
  18. +--------+
  19. |     16 |
  20. +--------+
  21. 1 row in set (0.01 sec)

Saludos
Leo.
  #3 (permalink)  
Antiguo 26/03/2012, 15:25
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Asignar query a una variable

leonardo_josue, gracias por responder.
El codigo que me suministras funciona correctamente. Sin embargo, quiero llegar mas allá y es ¿como se se hace para manipular el resultado contenido en esa variable?

Es decir, necesito usar ese valor para hacer comparaciones en mi lenguaje de programacion. Algo asi:

nResult:=Select @total

¿Es posible?

Gracias por tu amabilidad.

Saludos.
  #4 (permalink)  
Antiguo 26/03/2012, 16:51
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Asignar query a una variable

Josue, lo he resuelto como sigue. Sé que es algo "chapucero", y te agradecería si hubiera una forma más técnica de hacerlo.

Con esto puedo manipular los resultados en el lenguaje que uso.

oServer:Query("CREATE TEMPORARY TABLE IF NOT EXISTS sumas(" +;
"DEBE NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Mov del debe'," +;
"HABER NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Mov del haber')" +;
"ENGINE = InnoDB ;")

oServer:Query("INSERT INTO sumas (debe,haber) (SELECT SUM(debe),SUM(haber) FROM " +cTbImporte+ ")" +";")
oSumas:=oServer:Query("SELECT * FROM sumas ")
tDebe:=oSumas:debe
tHaber:=oSumas:haber

Saludos.

Etiquetas: query, select, tabla, variables
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 22:43.