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

[SOLUCIONADO] guardar un dato de una tabla en una variable

Estas en el tema de guardar un dato de una tabla en una variable en el foro de Mysql en Foros del Web. Buenas noches compañeros del web. Podrian ayuderame con lo siguiente por favor:? quiero recuperar el dato de una tabla es decir: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: ...
  #1 (permalink)  
Antiguo 13/05/2014, 17:15
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 10 años, 11 meses
Puntos: 2
guardar un dato de una tabla en una variable

Buenas noches compañeros del web.
Podrian ayuderame con lo siguiente por favor:?

quiero recuperar el dato de una tabla es decir:
Código MySQL:
Ver original
  1. set @var:(select edad from cliente where id_cliente=2);
  2. if @a>18 then
  3. return "mayor de edad";
  4. return "menor de edad";
es decir quiero recuperar la edad donde la id =2
y que esa edad me la guarde en una variable(@var), para luego usar esa variable
en una funcion.

y no logro dar con la respuesta.
  #2 (permalink)  
Antiguo 13/05/2014, 17: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: guardar un dato de una tabla en una variable

Voy a suponer que eso es parte de una stored function, porque de lo contrario no sirve para nada...
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE FUNCTION funcionX(idcliente INT) RETURNS VARCHAR(100)
  3.     # Las variables de usuario siempre se debe incializar
  4.     SET @VAR = 0;
  5.     SET @VAR = (SELECT edad FROM cliente WHERE id_cliente=idcliente);
  6.     IF @VAR>18 THEN
  7.         RETURN "mayor de edad";
  8.     ELSE
  9.         RETURN "menor de edad";
  10.     END IF;
  11. END$$
  12. DELIMITER ;
__________________
¿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 16/05/2014, 12:44
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: guardar un dato de una tabla en una variable

y si yo quiero que la variable que reciva el valor que estroigo de la tabla sea un parametro de un procedimiento almacenado
algo asi como sigue:

Código MySQL:
Ver original
  1. delimiter //
  2. create procedure funcionX( out param int)
  3. param=0;
  4. param=(select total from cliente where id_cliente=4);
  5.  
  6. id param>3000 then
  7. select "el valor es apto";
  8. select "el valor no es apto";
  9. //
  10. delimiter ;

y devuelve un error
  #4 (permalink)  
Antiguo 16/05/2014, 12:47
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: guardar un dato de una tabla en una variable

Cita:
y devuelve un error
Ajá...

¿Y qué error devuelve?

TE imaginarás que si no lo vemos será difícil decirte dónde falla...
__________________
¿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 16/05/2014, 15:53
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: guardar un dato de una tabla en una variable

mmm... de entrada se trata de un error de copiar-pegar y no fijarse en lo que se está haciendo jejejejejeeje...

Código:
id param>3000 then
dacroma, es if, no id... eso de entrada, habría que ver como dice gnzsoloyo, exactamente cuál es el error que te está marcando.

Saludos
Leo.
  #6 (permalink)  
Antiguo 18/05/2014, 12:37
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: guardar un dato de una tabla en una variable

El error dice:
Código MySQL:
Ver original
  1. you have an error in your SQL sintax; check de manual that corresponds to your
  2. mysql server version for de rigth sintax to use near '=0;
  3. num=(select total from factura where cod_factura=4); select num; end;' at line 3

y cuando lo hago de forma diferente:

Código MySQL:
Ver original
  1. delimiter //
  2. create procedure funcionX( param int)
  3. param=0;
  4. param=(select total from cliente where id_cliente=4);
  5.  
  6. if param>3000 then
  7. select "el valor es apto";
  8. select "el valor no es apto";
  9. end;
  10. //
  11. delimiter ;
  12. you have an error in your SQL sintax; check de manual that corresponds to your
  13. mysql server version for de rigth sintax to use near 'param=0;
  14. param=(select total from factura where cod_factura=4); select param; end;' at line 3

ò

Código MySQL:
Ver original
  1. delimiter //
  2. create procedure funcionX( param int)
  3. set @var=0;
  4. @var=(select total from cliente where id_cliente=param);
  5.  
  6. if @var > 3000 then
  7. select "el valor es apto";
  8. select "el valor no es apto";
  9. //
  10.  
  11. you have an error in your SQL sintax; check de manual that corresponds to your
  12. mysql server version for de rigth sintax to use near '@var=0;
  13. @var=(select total from factura where cod_factura=param); select param; end;' at line 3
  14. delimiter ;
  #7 (permalink)  
Antiguo 18/05/2014, 12:54
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: guardar un dato de una tabla en una variable

Primera regla básica de sintaxis de stored proceudres: Respeta la sintaxis de cada DBMS.
Segunda regla: Cada DBMS tiene su sintaxis para su propio lenguaje procedural. No existe un estandar, por lo que cada uno tiene reglas específicas.

Consejo primario y principal: Usa una herramienta nativa para escribir SP, tal que tenga un corrector sintáctico incorporado. Te ahorrarás muchísimos problemas, retrasos y dolores de cabeza por nimiedades.
En el caso de MySQL existe una: MySQL Workbench.
Úsala.

Además, te recomiendo que no uses cambios de delimitador donde el nuevo delimitador sea algún signo de uso interno. ¿Por qué crees que en los manuales aparece el "$$"? Pues simplemente porque ese seguro que no generará problemas.

Finalmente: Una asignación de valores a una variable, fuera de un SELECT INTO..., obligatoriamente requiere usar un comando SET.
Siempre.

Código MySQL:
Ver original
  1. delimiter $$
  2. CREATE PROCEDURE funcionX(IN param INT)
  3. SET param=0;
  4. SET param=(SELECT total FROM cliente WHERE id_cliente=4);
  5.  
  6. IF param>3000 THEN
  7. SELECT "el valor es apto";
  8. SELECT "el valor no es apto";
  9. END$$
  10. delimiter ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: dato, select, tabla, variable
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 01:52.