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

Procedimiento Almacenado

Estas en el tema de Procedimiento Almacenado en el foro de Mysql en Foros del Web. Buenas noches a todos, soy nuevo en el foro y estoy trabajando con VB.net y Mysql 5.1.11. Estoy desarrollando un programa y utilizare procedimientos almacenados ...
  #1 (permalink)  
Antiguo 17/06/2010, 20:11
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación Procedimiento Almacenado

Buenas noches a todos, soy nuevo en el foro y estoy trabajando con VB.net y Mysql 5.1.11.

Estoy desarrollando un programa y utilizare procedimientos almacenados en la capa de datos, sin embargo, me ha surgido un problema y por mas que leo no lo he podido solucionar. Estoy este procedimiento almacenado para validar el inicio de sesion con una tabla de usuarios en la BD:

CREATE DEFINER=`root`@`localhost` PROCEDURE `buscar_usuariopk`(in puser varchar(45), in ppassword varchar(45), out pcodresp int, out pdescresp varchar(60))

BEGIN

if not exists ( select * from usuarios where usuario = puser) then
set pcodresp = 0;
set pdescresp=("Nombre de Usuario Incorrecto");
else

if (select count(*) from usuarios where usuario= puser and pass=ppassword)=1 then

set pcodresp = 1;
set pdescresp=("Bienvenido ", puser);
else
set pcodresp = 0;
set pdescresp=("El password es incorrecto");
end if;

end if;

select pcodresp;

END

Este procedimiento me manda el error Operand should contain 1 column(s).

No logro ver el problema, el error me lo manda solo cuando la contraseña y el usuario son correctos y coinciden en la tabla con el valor almacenado. Si la contraseña o el usuario es incorrecta si me manda el error.

Gracias de antemano

Saludos
  #2 (permalink)  
Antiguo 17/06/2010, 20: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: 17 años
Puntos: 2658
Respuesta: Procedimiento Almacenado

La tabla `usuarios ` contiene múltiples campos, y ese segmento:
Código MySQL:
Ver original
  1. IF NOT EXISTS (SELECT * FORM usuarios WHERE usuario = puser) THEN
requiere que el SELECT de la consulta devuelva un sólo campo. Es decir, debería ser algo así:
Código MySQL:
Ver original
  1. IF  (SELECT COUNT(*) FORM usuarios WHERE usuario = puser)>0 THEN
o al menos:
Código MySQL:
Ver original
  1. IF NOT EXISTS (SELECT  usuario  FORM usuarios WHERE  usuario = puser) THEN
__________________
¿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 18/06/2010, 19:59
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Procedimiento Almacenado

Muchas gracias por la rapida respuesta, con respecto a lo que me recomendaste, hice las dos correcciones y de igual manera me siguio mandando el error. Me ha sido imposible identificar que sucede, sin embargo ley que ese error Operand should contain 1 column(s), lo genera Mysql cuando detecta una consulta select dentro de otra pero no entiendo porque se da en este caso.

De igual manera muchas gracias!

Etiquetas: procedimiento, almacenar
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 12:33.