Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Oracle

Respuesta
 
Herramientas Desplegado
Antiguo 10-ene-2008, 00:13   #1 (permalink)
Yecco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 11
validar login

Hola.

Como puedo validar un login en un procedimiento almacenado? hasta ahora tengo algo asi:

Código PHP:
CREATE OR REPLACE PACKAGE BODY validarLogin IS

PROCEDURE validar 
(
  
usuario_in USUARIOS.USUARIO%type,
  
clave_in USUARIOS.CLAVE%type,
  
validacion OUT NUMBER
IS
clave_check USUARIOS
.CLAVE%type :='VACIO';
BEGIN

 SELECT CLAVE INTO clave_check
 FROM USUARIOS
 WHERE USUARIO IN 
(usuario_in);

 IF (
clave_check=clave_inTHEN
  validacion
:=1;
 ELSE
  
validacion:=0;
 
END IF;

EXCEPTION
  WHEN OTHERS THEN
  RAISE_APPLICATION_ERROR
(-20001,'Datos Incorrectos');

END validar;

END validarLogin;

pero al recuperarlo en un servlet me tira el error feo ese de sql (SQLException: ORA-20001: Datos Incorrectos ORA-06512: en "VALIDARLOGIN", línea 23 ORA-06512: en línea 1 ) cuando en la tabla no existen los valores ingresados.

Como puedo hacer que no salga ese error y tratar de capturarlo en java y hacer algo mas bonito en le servlet?

Saludos!

Última edición por Yecco; 10-ene-2008 a las 00:20.
Yecco está desconectado   Responder Citando
Antiguo 10-ene-2008, 04:04   #2 (permalink)
matanga ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 529
Re: validar login

Hola,

Las dos excepciones mas comunes para manejar errores en un SELECT INTO son

Código:
when no_data_found then
--el mensaje que quieras, no existe el usuario

when too_many_rows then
--el mensaje que quieras, existe mas de un usuario con el mismo usuario_in
Algunos comentarios,

1. Talvez quieras cambiar esta linea

Código:
WHERE USUARIO IN (usuario_in);
por esta

Código:
WHERE USUARIO = usuario_in;
2. Considera utilizar el paquete DBMS_OBFUSCATION_TOOLKIT para encriptar las constraseñas en la tabla de usuarios.

Saludos
matanga está desconectado   Responder Citando
Antiguo 10-ene-2008, 23:22   #3 (permalink)
Yecco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Re: validar login

muchas gracias por la respuesta, ya lo solucione.

Ahora tengo otro problema. Los datos de la tabla estan en minusculas, y cuando los comparo con el mismo string pero mayusculas no me los acepta como iguales. Se supone que pl/sql no es case sensitive, o si?
Yecco está desconectado   Responder Citando
Antiguo 11-ene-2008, 03:45   #4 (permalink)
jc3000 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 279
Re: validar login

El pl-sql no, pero los strings si.

Esto 'CACHARRO' no es lo mismo que 'cacharro' ni en el ni en VB ni en C ni en nada
jc3000 está desconectado   Responder Citando
Antiguo 11-ene-2008, 06:04   #5 (permalink)
Yecco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Re: validar login

trate de hacer esto:

Código PHP:
CREATE OR REPLACE PACKAGE BODY validarLogin IS

PROCEDURE validar 
(
  
usuario_in USUARIOS.USUARIO%type,
  
clave_in USUARIOS.CLAVE%type,
  
validacion OUT NUMBER
IS
clave_check USUARIOS
.CLAVE%type :='VACIO';
BEGIN

 SELECT CLAVE INTO clave_check
 FROM USUARIOS
 WHERE upper
(USUARIO) = upper(usuario_in);

 IF (
upper(clave_check)=upper(clave_in)) THEN
  validacion
:=1;
 ELSE
  
validacion:=0;
 
END IF;

END validar;

END validarLogin
pero ahora no me funciona ni en mayus ni minusculas
Yecco está desconectado   Responder Citando
Antiguo 11-ene-2008, 12:56   #6 (permalink)
jc3000 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2007
Mensajes: 279
Re: validar login

Igual tienes algun blanco por ahí.

Prueba esto IF (trim(upper(clave_check))=trim(upper(clave_in)) )
jc3000 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 13:21.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93