Grant em Role não funcina em Stored Procedure

Oracle

19/04/2005

Fala galera...

Eu tenho uma role de nome xRole

Tenho um esquema de nome xEsquema_estoque

E outro chamado xEsquema_producao

E mais um outro que se chama xEsquema (que é o que todos se conectam)...

Dentro do esquema xEstoque_producao tenho uma tabela xProduto

Eu defini permissões (todas) para xRole acessar xProduto.

e defini permissão xRole para xEsquema.

Bom... parece que está tudo certo... e realmente, no SQLPlus funciona perfeitamente... porém, se eu criar uma SP dentro do esquema xEsquema, que acesse a tabela xProduto, dá erro....

Se eu definir permissões de acesso diretamente de xProduto para xEsquema funciona...

Será que alguém já passou por isso... será que eu estou fazendo alguma coisa errada...


Kotho

Kotho

Curtidas 0

Respostas

Motta

Motta

19/04/2005

Não faltou um grant de execute para a sp ?


GOSTEI 0
Kotho

Kotho

19/04/2005

Mota,

primeiramente, obrigado pela resposta...

na verdade o problema não está na execução da sp, mas na criação dela, pois ela diz que a tabela xProduto não existe (como se não tivesse permissão)... O estranho é que no SQLPlus eu consigo acessar a tabela normalmente... só dentro da sp que não...

entendeu???

ah! a versão do Oracle é 9.2


GOSTEI 0
Motta

Motta

19/04/2005

A SP e a table estão no mesmo owner ?

Senão :

1) Crie um sinonimo publico

2) Qualifique a table na SP ... SELECT * FROM USUARIO.TABLE


GOSTEI 0
Kotho

Kotho

19/04/2005

É amigo, acho que não vai ter solução... hehe

Como disse no primeiro post, xProduto pertente a xEsquema_Producao, e a procedure a xEsquema...

1) o sinonimo já existe...

2) a qualificação não adiantou...

Desculpe insistir, mas no SQLPlus funciona... só dentro da sp que não...

lembrando que se o Grant for dado direto ao xEsquema funciona, mas dando na Role xRole dá esse problema.


GOSTEI 0
Motta

Motta

19/04/2005

Como é esta role , senhada ?

O user que vai rodar já a tem como default , ou é passada dinamicamente (grant role xxxx to user) ?


GOSTEI 0
Mportes

Mportes

19/04/2005

Kotho, voce precisa ter privilegio direto no objeto. Roles são para os usuários finais.
[url]http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96595/dci05pls.htm#1004793[/url] aqui voce entra a parte do manual que explica isso.
Para testar o que voce tem ou não direito, no sql/plus
set role none;
e tente os comandos da procedure.

Abs,


GOSTEI 0
POSTAR