Pular para o conteúdo

Fóruns Banco de dados Oracle Erro na execução de MERGE Responder a: Erro na execução de MERGE

#168322
Avatar photoJosé Laurindo Chiappa
Moderador

    => agora sim, o MERGE :

    SCOTT@xepdb1::CONTAINER=XEPDB1> MERGE INTO SGI5_TAB_CUS_RET_RAT X
    2 USING(SELECT
    3 A.CUS_FAM as FAM,
    4 A.CUS_DTA as DMO_INI,
    5 NVL( LEAD(A.CUS_DTA,1)
    6 OVER (PARTITION BY A.CUS_FAM ORDER BY A.CUS_FAM, A.CUS_DTA)
    7 ,
    8 TRUNC(SYSDATE)
    9 ) as DMO_FIN,
    10 A.CUS_VLT_RTO as VLT_RTO,
    11 A.CUS_VLU_RTO as VLU_RTO,
    12 A.CUS_VLT_RMO as VLT_RMO,
    13 A.CUS_VLU_RMO as VLU_RMO
    14 FROM SGI5_TAB_CUS_REP_RAT A
    15 WHERE A.CUS_DTA >= to_date(’01/01/1980′, ‘dd/mm/yyyy’) — eu não tenho a variável V_DTA, uso valor fixo
    16 ) Y
    17 ON
    18 ( X.CUS_FAM = Y.FAM
    19 AND X.CUS_DMO BETWEEN Y.DMO_INI AND Y.DMO_FIN
    20 )
    21 WHEN MATCHED THEN
    22 UPDATE SET X.CUS_VLT_RTO = Y.VLT_RTO,
    23 X.CUS_VLU_RTO = Y.VLU_RTO,
    24 X.CUS_VLT_RMO = Y.VLT_RMO,
    25 X.CUS_VLU_RMO = Y.VLU_RMO;

    48 linhas mescladas.

    SCOTT@xepdb1::CONTAINER=XEPDB1>

    ===>> PERFEITO, Suave como o éter, Absolutamente Erro nenhum, tá ok ???? Isso COMPROVA que OU é um erro no seu código real , não presente nessa versão simplificada, OU é pau/limitação da tua tool de front-end ao processar o MERGE, OU é essa variável V_DTA que eu já apontei acima, OU vc tem mais código “oculto” aí que vc não nos motrou E que vc TEM QUE DEBUGAR, tá certo ???
    E só comentando, infelizmente o WordPress vai bagunçar TUDO, mas na hora de analisar/testar, eu coloquei SIM meu código SQL (tanto a query isolada QUANTO o MERGE) Alinhado nas colunas certas, com o fecha parêntesis na mesma posição do abre parêntesis, dei uns espaços para que cada coluna e cada ALIAS de coluna começassem na mesma coluna – isso AJUDA DEMAIS a se compreender qual função tá recebendo quais argumentos, EM ESPECIAL no caso desse NVL que englobla parêntesis do LEAD e do OVER , é MUITO FÁCIL se perder se não fizermos isso…

    Abraços,

    Chiappa