Roles

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rha_br
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 27 Out 2008 4:02 pm
Localização: Santo André

Boa tarde!

No sistema há 2 tipos de roles, tipo RoleA e RoleB. Essas 2 Roles conseguem executar a Stored Procedure "X"

Preciso montar uma condição numa Consulta dentro da Stored Procedure de tal forma que:

SELECT .........
FROM .....
WHERE ....

SE usuário pentence a RoleA ENTÃO
AND STATUS = 'A'
SE usuário pertence a RoleB ENTÃO
AND STATUS = 'B'
FIM-SE

Gostaria de saber qual seria a sintaxe, ou seja, um exemplo no Oracle para essa situação.

Obrigado.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Dá uma olhada no tópico abaixo, onde o Dr_Gori fala sobre a tabela do banco onde se armazenam as Roles:

http://www.glufke.net/oracle/viewtopic.php?t=3851

Através desta informação, você consegue montar um Select Dinâmico ou, até mesmo, utilizar Decode para sanar o problema.

Qualquer dúvida, manda pra gente.
rha_br
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 27 Out 2008 4:02 pm
Localização: Santo André

Trevisolli,

Realmente essa é a minha dúvida.

Ex:
SELECT nome_depto
FROM
DEPTO
WHERE

DECODE(????)

Como colocar dentro do decode se for uma role A, "And Status = X" e se for role B, "And Codigo = 1"

Vi que a tabela "user_role_privs " possui as roles do usuário, mas não sei como realizar essa condição dentro de um decode.

Não sei se ficou confuso..
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

cara...

você pode fazer algo assim...

Selecionar tudo

SELECT * FROM TABELA
WHERE STATUS = (SELECT decode(granted_role, 'A', 'A', 'B', 'B') FROM User_Role_Privs)
vê se corresponde...
thiago.pinheiro
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 16
Registrado em: Seg, 23 Jun 2008 11:06 am
Localização: Uberlândia - MG
======================
"Quando todos pensam o mesmo,
ninguém está pensando!"
======================

Se entendi bem, você quer colocar em uma variável qual a role do usuário?

... olha se te ajuda?

Selecionar tudo

BEGIN

   SELECT DECODE(granted_role,'roleA','A','roleB','B'))
      INTO variavel
     FROM user_role_privs; 

EXCEPTION
   WHEN others then
      Erro aqui;    
END
rha_br
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 27 Out 2008 4:02 pm
Localização: Santo André

Era isso mesmo que eu precisava!!!

Muito obrigado pessoal!!!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes