Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Oracle (http://www.forosdelweb.com/f100/)
-   -   validar login (http://www.forosdelweb.com/f100/validar-login-546875/)

Yecco 10/01/2008 01:13

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!

matanga 10/01/2008 05:04

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

Yecco 11/01/2008 00:22

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?

jc3000 11/01/2008 04:45

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

Yecco 11/01/2008 07:04

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 :neurotico

jc3000 11/01/2008 13:56

Re: validar login
 
Igual tienes algun blanco por ahí.

Prueba esto IF (trim(upper(clave_check))=trim(upper(clave_in)) )


La zona horaria es GMT -6. Ahora son las 06:07.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.