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

problemas para asignar un valor a una variable en procedure de un select

Estas en el tema de problemas para asignar un valor a una variable en procedure de un select en el foro de Mysql en Foros del Web. Buenas tengo una duda que ya tiene tiempo y no he podido solucionar por mi cuenta, la declaración de una variable con un valor asignado ...
  #1 (permalink)  
Antiguo 26/09/2013, 11:13
Avatar de rapanuti  
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Exclamación problemas para asignar un valor a una variable en procedure de un select

Buenas tengo una duda que ya tiene tiempo y no he podido solucionar por mi cuenta, la declaración de una variable con un valor asignado desde el llamado de un select, en teoría lo veo bien formulado de la siguiente manera ( set variable = (select campo from tabla where 1)) mas no me da resultado como tal en la asignación, dejo el codigo abajo para que puedan observar y ver donde se encuentra el error pues me arroja un valor null.

Código SQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `HTEvento`(INOUT `id ` INT, OUT `redoble` INT)
  2.     NO SQL
  3. BEGIN
  4. SET redoble=(SELECT `doble`FROM `trabajo2` WHERE `seqTrabajo` = 'id');
  5. END

declaro la variable id para usarle en el Where y que me busque el valor que de doble que es un valor int que esta en la tabla pero este me aroja como resultado un valor Null

Última edición por gnzsoloyo; 26/09/2013 a las 11:30
  #2 (permalink)  
Antiguo 26/09/2013, 11:33
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, 5 meses
Puntos: 2658
Respuesta: problemas para asignar un valor a una variable en procedure de un select

No lo estás comparando contra el valor entrante, sino contra una cadena de texto que dice "id".
Por otro lado, si no vas a usar ese ID para retornar algo, no lo pongas como INOUT. No tiene sentido ni utilidad.

Código MySQL:
Ver original
  1. CREATE PROCEDURE `HTEvento`(IN id INT, OUT redoble INT)
  2.     SET redoble=(SELECT `doble`FROM `trabajo2` WHERE `seqTrabajo` = id);
__________________
¿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 26/09/2013, 13:40
Avatar de rapanuti  
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: problemas para asignar un valor a una variable en procedure de un select

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No lo estás comparando contra el valor entrante, sino contra una cadena de texto que dice "id".
Por otro lado, si no vas a usar ese ID para retornar algo, no lo pongas como INOUT. No tiene sentido ni utilidad.

Código MySQL:
Ver original
  1. CREATE PROCEDURE `HTEvento`(IN id INT, OUT redoble INT)
  2.     SET redoble=(SELECT `doble`FROM `trabajo2` WHERE `seqTrabajo` = id);


colocando el codigo de la maner en que me indicas me aparece el siguiente error:
MySQL ha dicho: #1054 - Unknown column 'id' in 'where clause'
me esta tomando id como columna y no como variable
  #4 (permalink)  
Antiguo 26/09/2013, 13:45
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, 5 meses
Puntos: 2658
Respuesta: problemas para asignar un valor a una variable en procedure de un select

Cita:
colocando el codigo de la maner en que me indicas me aparece el siguiente error:
MySQL ha dicho: #1054 - Unknown column 'id' in 'where clause'
me esta tomando id como columna y no como variable
Primera regla básica de cualquier respuesta en un foro: No asumas que el código que te damos sirve para hacer Copy+Paste.
Sólo te indiqué lo que deberías hacer, pero no implica que el código que te postee sea funcional. Sólo es una guía.
Creo que cae de cajón que si te está tomando el nombre de la variable como si fuese el nombre de la columna, entonces deberías cambiar el nombre de la variable por otro diferente, ¿no te parece?
Supongo que ya deber haberlo hecho y probado... ¿no?

Bueno. Una cosa que siempre debes tener en cuenta es que jamás se deben usar nombres de objetos de bases de datos como nombres de variables. Eso te traería problemas en cualquier DBMS, y no sólo en MySQL.
__________________
¿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: procedure, select, sql, 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 02:22.