Fórum procedure não retorna resultado apos if #275628
05/04/2005
0
CREATE PROCEDURE VALIDA_USUARIO (
PAR_NOME_USUARIO VARCHAR(10),
PAR_SENHA_USUARIO VARCHAR(10))
RETURNS (
R_CODIGO INTEGER,
R_NOME VARCHAR(10),
R_SENHA VARCHAR(10),
R_ATIVO VARCHAR(1),
R_DATA_EXP DATE,
R_VALIDO VARCHAR(1))
AS
begin
FOR SELECT USUARIOS.codigo,
usuarios.nome,
usuarios.senha,
USUARIOS.ativo,
USUARIOS.data_expiracao
FROM usuarios
WHERE USUARIOS.NOME = :par_nome_usuario AND USUARIOS.senha = :par_senha_usuario
INTO :R_CODIGO,
:R_NOME,
:R_SENHA,
:R_ATIVO,
:R_DATA_EXP
DO
suspend;
BEGIN
IF (:R_NOME is null) then
BEGIN
EXCEPTION USUARIO_SENHA_INVALIDO;
END
ELSE
BEGIN
IF (:R_ATIVO <> ´S´) THEN
BEGIN
EXCEPTION USUARIO_DESATIVADO;
END
ELSE
BEGIN
IF (:R_DATA_EXP is null) then
begin
r_valido = ´S´;
end
else
begin
if (:R_DATA_EXP < CURRENT_TIMESTAMP) then
BEGIN
EXCEPTION usuario_expirado;
END
else
begin
r_valido = ´S´;
end
end
END
END
END
end
todos os if onde uso o EXCEPTION retorna a EXCEPTION mas onde tem r_valido = ´S´ não é incluido o resultado ficando o campo como null
o que pode estar a contecendo???
Valeu
Uilian Gurjon
Uiliangurjon
Curtir tópico
+ 0Posts
05/04/2005
Kotho
Gostei + 0
05/04/2005
Uiliangurjon
IF (:R_NOME is null) then
BEGIN
EXCEPTION USUARIO_SENHA_INVALIDO;
END
não retorna a exception
todos os outros retornam
Gostei + 0
05/04/2005
Kotho
Olhando melhor sua procedure, acho melhor colocar o Suspend antes do último END
Gostei + 0
05/04/2005
Uiliangurjon
Gostei + 0
06/04/2005
Emerson Nascimento
CREATE PROCEDURE VALIDA_USUARIO ( PAR_NOME_USUARIO VARCHAR(10), PAR_SENHA_USUARIO VARCHAR(10)) RETURNS ( R_CODIGO INTEGER, R_NOME VARCHAR(10), R_SENHA VARCHAR(10), R_ATIVO VARCHAR(1), R_DATA_EXP DATE, R_VALIDO VARCHAR(1)) AS BEGIN FOR SELECT usuarios.codigo, usuarios.nome, usuarios.senha, usuarios.ativo, usuarios.data_expiracao FROM usuarios WHERE usuarios.NOME = :par_nome_usuario AND usuarios.senha = :par_senha_usuario INTO :R_CODIGO, :R_NOME, :R_SENHA, :R_ATIVO, :R_DATA_EXP DO BEGIN IF (:R_NOME is null) THEN EXCEPTION USUARIO_SENHA_INVALIDO ELSE IF (:R_ATIVO <> ´S´) THEN EXCEPTION USUARIO_DESATIVADO ELSE IF (:R_DATA_EXP is null) or (:R_DATA_EXP >= CURRENT_TIMESTAMP) THEN r_valido = ´S´ ELSE IF (:R_DATA_EXP < CURRENT_TIMESTAMP) then EXCEPTION usuario_expirado; SUSPEND; END END
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)