viernes, 29 de junio de 2012

PostgreSql: Función login en postgres






Hola amigos les dejo otra función para validar el login y la clave de un usuario:

Tabla usuario
CREATE TABLE usuario
(
  idusuario serial NOT NULL,
  nom_ape character(150),
  logacceso character(15),
  clave character(32),
  telef character(15),
  correo character(25),
  CONSTRAINT usuario_pkey PRIMARY KEY (idusuario)
)

Aquí está la función:
  CREATE OR REPLACE FUNCTION user_acceso(_logacceso character,_clave character)
  RETURNS SETOF "public"."usuario" AS
$BODY$
DECLARE
_select usuario;
_user character(15);
_clav character(32);
begin
select into _user logacceso from usuario where logacceso=_logacceso;
select into _clav clave from usuario where clave=_clave and logacceso=_logacceso;
IF _user = _logacceso THEN
   IF _clav = _clave THEN
      for _select in select * from usuario where logacceso=_logacceso and clave=_clave
      loop
        RETURN next _select;
      end loop;
   ELSE
      RAISE EXCEPTION 'Clave incorrecta';
      RETURN;
      ROLLBACK;
   END IF; 
ELSE
RAISE EXCEPTION 'Usuario %',_logacceso||' no está registrado';-- || para concatenar
 RETURN;
 ROLLBACK;
END IF;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

Lo ejecutan de la siguiente manera:
SELECT * FROM user_acceso('tavo5','123')

4 comentarios:

  1. Funciona muy bien, pero tengo una pregunta, esta funcion me serviria si trabajara con php y como puedo mandar los mensajes de error desde php pero ejecutando una funcion de postgres?

    ResponderEliminar
    Respuestas
    1. La puedes desarrollar en un procedimiento almacenado.

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Muchas gracias por compartir estos ejemplos, saludos :)

    ResponderEliminar