Tire o Ponto e Virgula no final da instrução .
Ao inves disso GROUP BY c.qdra_id, i.imov_idcategoriaprincipal );'); Faça GROUP BY c.qdra_id, i.imov_idcategoriaprincipal )'); 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 8:10 Assunto: [oracle_br] execute immediate Pessoal, bom tarde. Estou tendo um problema com um execute immediate dentro um SP. EU tenho um create table que executando apenas ela por fora, ela é criada sem problema algum, mas quando coloco dentro do execute immediate me dá um erro na hora de executar a procedure. Segue o exemplo: CREATE OR REPLACE PROCEDURE teste_immediate IS BEGIN EXECUTE IMMEDIATE('CREATE TABLE 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; O erro gerado é o seguinte: ORA-00911: caractere inválido ORA-06512: em "TESTE_IMMEDIATE", line 3 ORA-06512: em line 2 Eu acho que o problema está no caracter com duas aspas simples, exemplo: ''12''. Como faço para resolver esse probleminha, alguém tem uma sugestão? [As partes desta mensagem que não continham texto foram removidas]