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]

Responder a