o que ha de errado???
criei uma procedure para validar o usuario so que não retorna o acesso negado, quando informo um usuario inesistente
CREATE PROCEDURE AUTENTICACAO (
I_EMP INTEGER,
I_USU VARCHAR(10),
I_SEN VARCHAR(15))
RETURNS (
R_USU VARCHAR(10),
R_COD_FUN INTEGER)
AS
begin
FOR
SELECT
FUN_CODIGO,
FUN_USUARIO
FROM funcionario
WHERE FUN_USUARIO = :i_usu and
FUN_SENHA = :i_sen
into :r_cod_fun,
:r_usu
DO
BEGIN
IF (:r_usu IS NULL) THEN
BEGIN
exception ACESSO_NEGADO;
suspend;
END
else
begin
suspend;
end
END
end
CREATE PROCEDURE AUTENTICACAO (
I_EMP INTEGER,
I_USU VARCHAR(10),
I_SEN VARCHAR(15))
RETURNS (
R_USU VARCHAR(10),
R_COD_FUN INTEGER)
AS
begin
FOR
SELECT
FUN_CODIGO,
FUN_USUARIO
FROM funcionario
WHERE FUN_USUARIO = :i_usu and
FUN_SENHA = :i_sen
into :r_cod_fun,
:r_usu
DO
BEGIN
IF (:r_usu IS NULL) THEN
BEGIN
exception ACESSO_NEGADO;
suspend;
END
else
begin
suspend;
end
END
end
Uiliangurjon
Curtidas 0
Respostas
Emerson Nascimento
24/01/2006
tente assim:
create procedure AUTENTICACAO ( I_EMP INTEGER, I_USU VARCHAR(10), I_SEN VARCHAR(15)) returns ( R_USU VARCHAR(10), R_COD_FUN INTEGER) as begin for select FUN_CODIGO, FUN_USUARIO from FUNCIONARIO where FUN_USUARIO = :i_usu and FUN_SENHA = :i_sen and FUN_EMPRESA = :i_emp into :r_cod_fun, :r_usu do suspend; if (:r_usu is null) then begin exception ACESSO_NEGADO; suspend; // esse suspend é realmente necessário? // se esse suspend for retirado, retire também o // begin..end, pois não será mais necessário end end
GOSTEI 0
Uiliangurjon
24/01/2006
Muito Obrigado!
GOSTEI 0