Pessoal, Neste caso eu acredito que o pacote DBMS_LOB possa ajudar. Nele vocês podem utilizar o procedimento READ para ler "pedaços" de uma variável do tipo LOB. Estes pedaços poderiam ser acumulados em uma variável VARCHAR2 que poderia ser passada para o comando EXECUTE IMMEDIATE. Claro que se o DDL exceder o tamanho máximo que um VARCHAR2 pode amazenar, vocês podem ainda criar uma lógica que utilize um vetor, acredito que para a maioria dos DDLs retornados uma única variável será suficiente. O pacote DBMS_LOB também oferece a função GETLENGTH, que pode ser utilizada para testar a quantidade de caracteres presentes numa variável CLOB. Só mais um comentário. Neste caso, eu recomendaria uma procedure. Não é muito "elegante" utilizar parâmetros de OUT em uma function.
Att, Wellerson "Não vou deixar me embrutecer, eu acredito nos meus ideais. Podem até maltratar o meu coração, que meu espírito ninguém vai conseguir quebrar..." (Legião Urbana) "As idéias estão no chão, você tropeça e acha a solução..." (Titãs) ________________________________ De: Carlos martello <[EMAIL PROTECTED]> Para: oracle_br@yahoogrupos.com.br Enviadas: Quarta-feira, 19 de Novembro de 2008 17:14:31 Assunto: RES: RES: RES: [oracle_br] Ajuda em procedure[URGENTE] Ah sim..... Então cara, vc não consegue pelo fato de um campo ou variável do tipo clob ter suas "particularidades" . Eu sinceramente também não sei e até pesquisaria pra vc (até pq também estava precisando dessa informação), mas o certo seria fazer uma pesquisa no Google ou metalink sobre como converter clob em varchar por exemplo. Assim o problema seria resolvido ;). Assim que algum dos dois encontrar a "fórmula" encaminhamos, beleza? Carlos Martello DBA Oracle / Consultor de Tecnologia TEL: 55+21+3094-6250 Choice Technologies S/A - Inteligência em Energia e-mail: carlosmartello@ choice.com. br De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em nome de Gabriel Herdt Enviada em: quarta-feira, 19 de novembro de 2008 15:17 Para: [EMAIL PROTECTED] os.com.br Assunto: Re: RES: RES: [oracle_br] Ajuda em procedure[URGENTE] Eu não consigo passar o resultado do Get_dll para uma variavel e executar o conteudo dessa variavel. Tem outra forma de executar o Resultado do GET_DDL? --- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> , "Carlos Eduardo P. Martello" <carlos.martello@ ...> escreveu > > Gabriel, até vi agora de uma forma mais atenta que vc já faz o execute > immediate dentro da função..... > > > > Não entendi o que você quer então.... > > > > É o execute immediate que não está funcionando? > > > > > > Abs, > > > > > > > > Carlos Martello > > DBA Oracle / Consultor de Tecnologia > > TEL: 55+21+3094-6250 > > Choice Technologies S/A - Inteligência em Energia > > e-mail: carlosmartello@ ... > > > > De: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> [mailto:[EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> ] Em > nome de Gabriel Herdt > Enviada em: terça-feira, 18 de novembro de 2008 22:33 > Para: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> > Assunto: Re: RES: [oracle_br] Ajuda em procedure[URGENTE] > > > > assim obrigado vou tentar, maas eu quero executar p dll gerado pela > funcao. pode me dizer como? > --- Em [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> > <mailto:oracle_ br% 40yahoogrupos. com.br> > , "Carlos Eduardo P. Martello" > <carlos.martello@ > escreveu > > > > Gabriel, > > > > > > > > Tente o seguinte: > > > > > > > > > > > > Declare > > > > Vsql varchar2(2000) :=''; > > > > Begin > > > > Vsql := fn_compara; > > > > Execute immediate vsql; > > > > End; > > > > > > > > Se ao invés de vc retornar um clob, retornar um varchar2, ajuda. > > > > > > > > Abs, > > > > > > > > > > > > > > > > Carlos Martello > > > > DBA Oracle / Consultor de Tecnologia > > > > TEL: 55+21+3094-6250 > > > > Choice Technologies S/A - Inteligência em Energia > > > > e-mail: carlosmartello@ > > > > > > > > De: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> > > <mailto:oracle_ br% 40yahoogrupos. com.br> > [mailto:[EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> > <mailto:oracle_ br% 40yahoogrupos. com.br> > ] Em > > nome de Gabriel Herdt > > Enviada em: segunda-feira, 17 de novembro de 2008 16:49 > > Para: [EMAIL PROTECTED] os.com.br <mailto:oracle_ br%40yahoogrupos .com.br> > > <mailto:oracle_ br% 40yahoogrupos. com.br> > > > Assunto: [oracle_br] Ajuda em procedure[URGENTE] > > > > > > > > Pessoal como executar o resultado de DBMS_METADATA. get_ddl(. ..) em > > uma Function? Segue abaixo minmha Function > > > > FUNCTION FN_COMPARA ( > > pr_usera IN VARCHAR2, > > pr_userb IN VARCHAR2, > > pr_erro OUT VARCHAR2 > > ) > > RETURN VARCHAR2 > > IS > > vtable_name VARCHAR2 (30); > > DDL CLOB; > > i INTEGER; > > a INTEGER; > > x INTEGER; > > --get dbms_metadata. get_ddl > > (object_type, name,schema, version,model, transform) ; > > -- variable_name datatype; > > BEGIN > > vtable_name := ''; > > i := 0; > > x := 0; > > -- grant select on all_tables to TCCB; > > > > FOR tabela IN (SELECT table_name > > FROM all_tables > > WHERE owner IN (UPPER ('tcca'), UPPER ('TCCB')) > > AND table_name NOT IN (SELECT table_name > > FROM all_tables > > WHERE owner = 'TCCB')) > > LOOP > > vtable_name := tabela.Table_ name; > > > > DDL := DBMS_METADATA. get_ddl ('TABLE', vtable_name, pr_usera); > > EXECUTE IMMEDIATE TO_CHAR (DDL); > > > > COMMIT; > > END LOOP; > > > > RETURN TO_CHAR (DDL); > > EXCEPTION > > WHEN OTHERS > > THEN > > pr_erro := ('Erro: ' ||pr_erro||SQLERRM) ; > > END; > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas] Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]