nsouza Postado Maio 2, 2010 Denunciar Share Postado Maio 2, 2010 Colegas,criei a função abaixo mas os valores parecem que não estão sendo guardados dento das variaveis,se eu chamar select fu_permissao(7,'I'), era para retornar a mensagem Acesso negado a inclusão já queeste usuario não tem acesso para incluir , porém não acontece isso. Como faço para guardar os valoes S e N dentro das variaveis marcadas abaixo?ObrigadoCREATE OR REPLACE FUNCTION fu_permissao(pidusuario dm_inteiro, popr dm_opr) RETURNS void AS$BODY$DECLARE v_count integer;DECLARE v_incluir char(1);DECLARE v_alterar char(1);DECLARE v_excluir char(1);DECLARE v_visualizar char(1);DECLARE v_imprimir char(1);BEGIN-- Selecione as permissões do usuário select u.status,a.incluir,a.alterar,a.excluir,a.visualizar,a.imprimir from tb_usuario u inner join tb_nivel_acesso a on u.tipo_acesso = a.tipo_acesso where u.idusuario = pidusuario and u.status = 'S' into v_incluir, v_alterar, v_excluir, v_visualizar, v_imprimir;-- Retorna a quantidade de linhas para liberação de acesso select count(1) from tb_usuario where idusuario = pidusuario and status = 'S' into v_count; if (v_count = 0) then raise notice 'Não é permitida nenhuma operação para este usuário. Solicite a liberação para o o administrador do sistema'; exit; end if; --************************************************************************************************** -- Controla o acesso do usuário if ((popr = 'I') and (v_incluir = 'N')) then raise notice 'Acesso negado a inclusão'; exit; end if; if ((popr = 'A') and (v_alterar = 'N')) then raise notice 'Acesso negado a alteração'; exit; end if; if ((popr = 'E') and (v_excluir = 'N')) then raise notice 'Acesso negado a exclusão'; exit; end if; if ((popr = 'V') and (v_visualizar = 'N')) then raise notice 'Acesso negado a visualização'; exit; end if; if ((popr = 'P') and (v_imprimir = 'N')) then raise notice 'Acesso negado a impressão'; exit; end if; END;$BODY$ LANGUAGE 'plpgsql' Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nsouza
Colegas,
criei a função abaixo mas os valores parecem que não estão sendo guardados dento das variaveis,
se eu chamar select fu_permissao(7,'I'), era para retornar a mensagem Acesso negado a inclusão já que
este usuario não tem acesso para incluir , porém não acontece isso. Como faço para guardar os valoes S e N dentro
das variaveis marcadas abaixo?
Obrigado
CREATE OR REPLACE FUNCTION fu_permissao(pidusuario dm_inteiro, popr dm_opr)
RETURNS void AS
$BODY$
DECLARE v_count integer;
DECLARE v_incluir char(1);
DECLARE v_alterar char(1);
DECLARE v_excluir char(1);
DECLARE v_visualizar char(1);
DECLARE v_imprimir char(1);
BEGIN
-- Selecione as permissões do usuário
select u.status,a.incluir,a.alterar,a.excluir,a.visualizar,a.imprimir
from tb_usuario u inner join tb_nivel_acesso a on u.tipo_acesso = a.tipo_acesso
where u.idusuario = pidusuario and u.status = 'S'
into v_incluir, v_alterar, v_excluir, v_visualizar, v_imprimir;
-- Retorna a quantidade de linhas para liberação de acesso
select count(1)
from tb_usuario
where idusuario = pidusuario
and status = 'S'
into v_count;
if (v_count = 0) then
raise notice 'Não é permitida nenhuma operação para este usuário.
Solicite a liberação para o o administrador do sistema';
exit;
end if;
--**************************************************************************************************
-- Controla o acesso do usuário
if ((popr = 'I') and (v_incluir = 'N')) then
raise notice 'Acesso negado a inclusão';
exit;
end if;
if ((popr = 'A') and (v_alterar = 'N')) then
raise notice 'Acesso negado a alteração';
exit;
end if;
if ((popr = 'E') and (v_excluir = 'N')) then
raise notice 'Acesso negado a exclusão';
exit;
end if;
if ((popr = 'V') and (v_visualizar = 'N')) then
raise notice 'Acesso negado a visualização';
exit;
end if;
if ((popr = 'P') and (v_imprimir = 'N')) then
raise notice 'Acesso negado a impressão';
exit;
end if;
END;
$BODY$
LANGUAGE 'plpgsql'
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.