estou fazendo um trabalho de migração de dados e tenho que atualizar alguns campos em uma tabela, dados esses que são extraidos de uma outra tabela. Utilizei um Update dentro de um Select, conforme abaixo:
SELECT ‘UPDATE quant_movimentacoes_caged SET
qt_acert_inclusao_adm =’+ sum(adm_inclusao) +
‘, qt_acerto_exclusao_adm =’+ sum(adm_exclusao) +
‘, qt_acerto_inclusao_desl =’+ sum(des_inclusao) +
‘, qt_acerto_exclusao_desl =’+ sum(des_exclusao) +
‘ WHERE nu_doc_identificacao =’+ identificador +
‘ AND cs_tipo_doc_ident_estab =’+ tipo_identificador +
‘ AND nu_ano = ‘+ substr(to_char(competencia),1,4) +
‘ AND nu_mes = ‘+ substr(to_char(competencia),5,2)
from tdetalhe_extrato_acerto
group by identificador, tipo_identificador, competencia
having count(*) > 1
Esse select deveria gerar registros que seriam os update’s. Utilizei muito esse recurso em migração de dados no sql-server… só que no oracle esta dando uma mensagem de erro “Invalid Number”. Vou especificar os tipos de dados dos campos da tabela tdetalhe_extrato_acerto:
identificador(char)
tipo_identificador(number)
competencia(number)
adm_inclusao(number)
adm_exclusao(number)
des_inclusao(number)
des_exclusao(number)