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]