AlexITWV 0 Denunciar post Postado Abril 6, 2015 Preciso automatizar um processo, onde eu tenho 200 tabelas distintas. Cada tabela tem sua chave e para cada coluna eu gostaria de ter uma linha amarrada esta chave. Porem, por ser 200 tabelas distintas o nome e a quantidade de colunas divergem. Gostaria de saber se alguem já realizou um processo parecido, e se tem alguma dica. select altc.TABLE_NAME, altc.COLUMN_NAME, altc.COLUMN_ID from all_tables alt, all_tab_columns altc where alt.table_name like '%T00%' and alt.owner = 'BASE' and alt.TABLE_NAME = altc.TABLE_NAME order by 1, 3 Retorna Exemplo: line table_name Column_Name Id_column 1 LEG_T0000002 DBIDOC 12 LEG_T0000002 DBSREC 23 LEG_T0000002 Contrato 34 LEG_T0000002 nomeCliente 45 LEG_T0000002 cpfCnpj 56 LEG_T0000002 caixaCliente 6 Atualmente eu estou passando os parametros assim para minha procedure for doc in (select dbidoc id_documento, CONTRATO || '#' || NOMECLIENTE || '#' || CPFCNPJ || '#' || CAIXACLIENTE || '#' || CAIXASERVICE as conteudo from LEG_T0000002) Eu estou utilizando os '#' para utilizar esta função for x in (SELECT COLUNA CRITERIO_PESQUISA, LINHA CONTEUDO FROM (SELECT rownum ID_ordem, regexp_substr(linha, separador, 1, LEVEL) linha FROM (SELECT doc.conteudo linha, '[^#]+' separador FROM dual) CONNECT BY regexp_substr(linha, separador, 1, LEVEL) IS NOT NULL) CONTEUDO, (select * from (SELECT rownum ID_ordem, regexp_substr(COLUNA, separador, 1, LEVEL) COLUNA FROM (SELECT 'Contrato#Cliente#Cpf\Cnpj#Caixa Antiga#Caixa Service' coluna, -- Cabeçalho dos Critério '[^#]+' separador FROM dual) CONNECT BY regexp_substr(COLUNA, separador, 1, LEVEL) IS NOT NULL) COLUNA where COLUNA is not null) COLUNA WHERE CONTEUDO.ID_ORDEM = COLUNA.ID_ORDEM) Os campos em vermelho é onde eu gostaria de automatizar, Exemplo buscar Gostaria de popular estas strings automaticamente de alguma forma com o retorno do primeiro SELECT. Nunca utilizei o unpivot e o pivot, mas pelo oque eu vi nos exemplos eu devo passar os valores das colunas da mesma maneira. Eu gostaria de alguma forma por exemplo select t.table_name from all_tables t where t.column_id = r.column_id e já disponiblizasse as colunas automaticamente. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 6, 2015 Tente com LISTAGG Compartilhar este post Link para o post Compartilhar em outros sites
AlexITWV 0 Denunciar post Postado Abril 11, 2015 Opa beleza Motta? utilizei UNPIVOT, e fiz a string através dos ponteiros passando os nomes das colunas concatenando e no final formando um bloco. Este método que você me mandou me deu uma boa base, obrigado. Compartilhar este post Link para o post Compartilhar em outros sites