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: [EMAIL PROTECTED] De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Gabriel Herdt Enviada em: segunda-feira, 17 de novembro de 2008 16:49 Para: oracle_br@yahoogrupos.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]