O usuario Dono da procedure deve ter o privilegio direto, não pode ser dado via 
role. Tipo não adianta dar permissão de DBA, pois apesar de estar implicito que 
esta role tem permissão de Criar tabela, mas dentro da procedure o usurio dono 
da procedure deve ter a permissão Create Table.

 
Alessandro Lúcio Cordeiro da Silva 
        Analista de Sistema
þ http://alecordeirosilva.blogspot.com/
O tic-tac do relógio me lembra de algo muito importante que esta acontecendo: 
estamos vivos.
                                "Joana de Souza Schmitz Croxato"
 


________________________________
 De: raffaell.ti77 <raffaell.t...@yahoo.com>
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Quinta-feira, 12 de Julho de 2012 17:20
Assunto: [oracle_br] Privilégio insuficiente
 

  
Pessoal, estou com um probleminha, a procedure abaixo é criada com sucesso, sem 
erros de compilação. Na execução da procedure me dá um erro de insuficiente 
privilégio. O usuário que estou executando tem privilégio de sysdba. Com o 
mesmo usuário peguei o CREATE TABLE e rodei por fora, e a tabela foi criada com 
sucesso, gostaria de saber alguma sugestão de vocês.

Obs: O ususario cobranca recebeu todos os grants possíveis

create or replace
PROCEDURE cobranca.SP_GERAR_RES_PENDENCIA
IS
BEGIN

EXECUTE IMMEDIATE ('CREATE TABLE cobranca.quadra_temp AS (select c.qdra_id 
qdra_id, i.imov_idcategoriaprincipal catg_id, count(distinct c.imov_id) 
quantidade
from faturamento.conta c
inner join cadastro.imovel i
on i.imov_id = c.imov_id
inner join cadastro.sistema_parametros sp
on 1=1
where((c.cnta_amreferenciacontabil <=
(CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') 
THEN
to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 
1, 4)) - 1)) || ''12''))
ELSE sp.parm_amreferenciafaturamento - 1 END)
and c.dcst_idatual in ( 0,1,2) )
or ( c.cnta_amreferenciacontabil >
(CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') 
THEN 
to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 
1, 4)) - 1)) || ''12''))
ELSE sp.parm_amreferenciafaturamento - 1 END) and c.dcst_idatual in (3,4,5,8) )
and ( c.dcst_idanterior is null
or ( c.cnta_amreferenciaconta <= (CASE WHEN 
(substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') THEN 
to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 
1, 4)) - 1)) || ''12'')) ELSE sp.parm_amreferenciafaturamento - 1 END) and 
c.dcst_idanterior not in (1,2) )))
GROUP BY c.qdra_id, i.imov_idcategoriaprincipal)');

END; 


 

[As partes desta mensagem que não continham texto foram removidas]

Responder a