none
Erro recursion 100 RRS feed

  • Pergunta

  • Boa Noite Amigos, 

    a SQL e enorme e ela me retorna o seguinte erro

    Mensagem 530, Nível 16, Estado 1, Linha 1
    The statement terminated. The maximum recursion 100 has been exhausted before statement completion.

    Horário de conclusão: 2020-07-11T19:02:08.3296958-03:00

    Obrigado a todos pela ajuda.


    sábado, 11 de julho de 2020 22:35

Todas as Respostas

  • Bom dia,

    Experimente acrescentar a linha abaixo no final da sua consulta para deixa-la sem limite na quantidade de recursões:

    OPTION (MAXRECURSION 0)

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    domingo, 12 de julho de 2020 12:25
  • Jovem tentei colocando no final, porem me retorna a mesma msn

    segue a SQL

                                                                                        



    SELECT DISTINCT
    CONVERT(DATE,GETDATE(), 103)  DATAREFERENCIA,
    XVENDA.CODCOLIGADA  COLIGADA,
    XVENDA.COD_PESS_EMPR  EMPREE,
    XSUBUNIDADE.NUM_UNID  UNIDADE,
    XSUBUNIDADE.NUM_SUB_UNID  SUBUNIDADE,
    XVENDA.VENDAALUGUEL  TIPOCONTRATO,
    XVENDACOMPL.FINCPROPRIO  FINANCIAMENTO,
    XVENDA.COD_SIT_VENDA  SITUACAOVENDA,
    XTIPOPARCELA.DSC_TIPO_PARC  TIPOPARCELA,
    XVENDA.NUM_VENDA  NUMVENDA,
    FCFO.NOME AS CLIFOR,
    FLAN.DATAVENCIMENTO  DATAVENC,
    --------------------------------------------------------------------------------------------------------
    CASE
    WHEN FLAN.VALORBAIXADO = 0
    THEN FLAN.VALORORIGINAL
    ELSE 
    (SELECT TOP 1 COALESCE(FLOGVALORES.VALORORIGINAL,0) FROM FLOGVALORES  WHERE FLOGVALORES.IDLAN = FLAN.IDLAN  AND FLOGVALORES.CODCOLIGADA = FLAN.CODCOLIGADA ORDER BY IDLOG DESC)
    END AS VR_ORIG,
    --------------------------------------------------------------------------------------------------------
    ISNULL(DBO.ACUMULADO_SALDOCM2(XVENDAPARCELA.IDLAN,XVENDAPARCELA.CODCOLIGADA),0) AS 'SALDOCM',
    --------------------------------------------------------------------------------------------------------

    ((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    *isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO),0)
    AS IGPM,
    --------------------------------------------------------------------------------------------------------
    CASE
    WHEN XVENDACOMPL.FINCPROPRIO = '01'
    THEN 
    CASE
    WHEN FLAN.DATAVENCIMENTO > GETDATE()
    THEN (ISNULL(FLAN.VALORBAIXADO, 0)
    - ISNULL(FLAN.VALORBAIXADO, 0)
    - (SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 4 OR FLI.IDCAMPO = 10 OR FLI.IDCAMPO = 24 OR FLI.IDCAMPO = 29 OR FLI.IDCAMPO = 100 OR FLI.IDCAMPO = 105))
    - (SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 5 OR FLI.IDCAMPO = 7 OR FLI.IDCAMPO = 11 OR FLI.IDCAMPO = 11 )))
    - ((ISNULL(FLAN.VALORORIGINAL, 0)-ISNULL(FLAN.VALORBAIXADO, 0)
    - (SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 4 OR FLI.IDCAMPO = 10 OR FLI.IDCAMPO = 24 OR FLI.IDCAMPO = 29 OR FLI.IDCAMPO = 100 OR FLI.IDCAMPO = 105))
    - (SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 5 OR FLI.IDCAMPO = 7 OR FLI.IDCAMPO = 11 OR FLI.IDCAMPO = 11 )))
    / (POWER(POWER((1 + XVENDACOMPL.TAXADESC / 100), (1.000 / 30)), DATEDIFF(DAY, FLAN.DATAOP1, FLAN.DATAVENCIMENTO)+1))) 
    ELSE 0 
    END 
    WHEN (XVENDACOMPL.FINCPROPRIO = '02' AND XRC.COD_MOD_CALC = '1') THEN
    CASE
    WHEN
    ((FLAN.DATAVENCIMENTO > XVENDAPARCELA.DATULTREAJUSTE) AND (SUBSTRING(CONVERT(CHAR(8),FLAN.DATAVENCIMENTO,112),1,6)) = SUBSTRING(CONVERT(CHAR(8),GETDATE(),112),1,6))
    THEN
    (((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA =XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3))
    - (((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3))
    / ((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 )) * 0.01))
    * (POWER((1+0.01),((DATEDIFF(DAY, XVENDAPARCELA.DATULTREAJUSTE,DATEADD (M, -1,FLAN.DATAVENCIMENTO )) / DATEDIFF(DAY, FLAN.DATAVENCIMENTO,DATEADD (M, -1,FLAN.DATAVENCIMENTO ))) -1)))))
    + (((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA =XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 ))
    - (((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 ))
    / ((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 )) * 0.01))
    * (POWER((1+0.01),((DATEDIFF(DAY, XVENDAPARCELA.DATULTREAJUSTE,DATEADD (M, -1,FLAN.DATAVENCIMENTO )) / DATEDIFF(DAY, FLAN.DATAVENCIMENTO,DATEADD (M, -1,FLAN.DATAVENCIMENTO )))-1))))))
    / (ISNULL(FLAN.VALORORIGINAL,0)+(SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 ))))
    WHEN 
    ((FLAN.DATAVENCIMENTO > XVENDAPARCELA.DATULTREAJUSTE) AND  (SUBSTRING(CONVERT(CHAR(8),FLAN.DATAVENCIMENTO,112),1,6))<> SUBSTRING(CONVERT(CHAR(8),GETDATE(),112),1,6))
    THEN
    (SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 ))
    + (((SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3)))
    / (ISNULL(FLAN.VALORORIGINAL,0)+(SELECT COALESCE(SUM(FLI.VALOR),0)  FROM FLANINTEGRACAO FLI WHERE FLI.IDLAN = XVENDAPARCELA.IDLAN  AND FLI.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA AND (FLI.IDCAMPO = 3 ))))
    ELSE 0
    END
    ELSE 0
    END  AS DESCONTO,
    --------------------------------------------------------------------------------------------------------
    ISNULL(DBO.ACUMULADO_SALDOTXAMBOS(XVENDAPARCELA.IDLAN,XVENDAPARCELA.CODCOLIGADA),0) AS JUROS_COMP_VINCNEDO,
    --------------------------------------------------------------------------------------------------------
    (CASE when FLAN.DATAVENCIMENTO < flan.dataop1
    then (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)+
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO),0) 
    else 
    case
    when flan.dataop1 is null
    then CASE 
    WHEN (FLAN.DATAVENCIMENTO < GETDATE()) 
    THEN (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO),0))) 
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0) 
    ELSE 0 
    END
    else 0
    end
    end)AS   JUROS_COMP,
    --------------------------------------------------------------------------------------------------------
    (CASE
    WHEN flan.dataop1 IS NULL
    then CASE 
    WHEN (FLAN.DATAVENCIMENTO < GETDATE())
    THEN ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))+
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)) 
    * isnull((DATEDIFF(DAY, FLAN.DATAVENCIMENTO, GETDATE()) * (XVENDACOMPL.PERCIGPMJUROS / 3000)), 0) 
    ELSE 0 
    END
    else CASE 
    WHEN (FLAN.DATAVENCIMENTO < flan.dataop1)
    THEN ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)+
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) 
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)) 
    * isnull((DATEDIFF(DAY, FLAN.DATAVENCIMENTO, flan.dataop1) * (XVENDACOMPL.PERCIGPMJUROS / 3000)), 0) 
    ELSE 0 
    END 
    end)
    AS JUROS_MORA,
    --------------------------------------------------------------------------------------------------------
        case
    when flan.dataop1 is null
    then CASE 
    WHEN FLAN.DATAVENCIMENTO < GETDATE()
    THEN ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) + 
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) 
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO),0) 
    + ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))+
    ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) 
    * isnull((DATEDIFF(DAY, FLAN.DATAVENCIMENTO, GETDATE()) * (XVENDACOMPL.PERCIGPMJUROS / 3000)), 0)) 
    * isnull(CASE 
    WHEN DATEDIFF(DAY, FLAN.DATAVENCIMENTO, GETDATE()) * (XVENDACOMPL.PERCMULTA / (XVENDACOMPL.diasmulta*100)) >= XVENDACOMPL.PERCMULTA/100 
    THEN XVENDACOMPL.PERCMULTA/100
    ELSE (DATEDIFF(DAY, FLAN.DATAVENCIMENTO, GETDATE()) * (XVENDACOMPL.PERCMULTA / (XVENDACOMPL.diasmulta*100))) 
      END, 0) 
    ELSE 0 
    END
    else CASE 
    WHEN FLAN.DATAVENCIMENTO < flan.dataop1
    THEN ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))+
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)+
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))
    * isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0) 
    + ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))+
    ((((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO) +
    (((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    * isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0)))*
    isnull(dbo.Acumulado_JurosCompl(flan.DATAOP1, XVENDAPARCELA.NUMVENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO), 0))) 
    * isnull((DATEDIFF(DAY, FLAN.DATAVENCIMENTO, flan.dataop1) * (XVENDACOMPL.PERCIGPMJUROS / 3000)), 0)) 
    * isnull(CASE 
    WHEN DATEDIFF(DAY, FLAN.DATAVENCIMENTO, flan.dataop1) * (XVENDACOMPL.PERCMULTA / (XVENDACOMPL.diasmulta*100)) >= XVENDACOMPL.PERCMULTA/100 
    THEN XVENDACOMPL.PERCMULTA/100 
    ELSE (DATEDIFF(DAY, FLAN.DATAVENCIMENTO, flan.dataop1) * (XVENDACOMPL.PERCMULTA / (XVENDACOMPL.diasmulta*100))) 
      END, 0) 
    ELSE 0 
    END 
    END AS MULTAVAL,

    --------------------------------------------------------------------------------------------------------
    NULL AS VALCAP, 
        NULL AS VALBAIXA,
        NULL AS DATABAIXA,
    NULL AS FORMAPGTO,
    NULL AS STATUSLAN,
    NULL AS SALDO
    FROM XVENDA (NOLOCK) 
    INNER JOIN XVENDAPARCELA (NOLOCK)
    ON(XVENDA.NUM_VENDA = XVENDAPARCELA.NUMVENDA
    AND XVENDA.CODCOLIGADA = XVENDAPARCELA.CODCOLIGADA)
    INNER JOIN XTIPOPARCELA (NOLOCK)
    ON(XVENDAPARCELA.CODTIPOPARC = XTIPOPARCELA.COD_TIPO_PARC)
    INNER JOIN XITEMVENDA (NOLOCK)
    ON(XVENDA.NUM_VENDA = XITEMVENDA.NUM_VENDA
    AND XVENDA.COD_PESS_EMPR = XITEMVENDA.COD_PESS_EMPR)
    INNER JOIN XSUBUNIDADE (NOLOCK)
    ON(XVENDA.COD_PESS_EMPR = XSUBUNIDADE.COD_PESS_EMPR
    AND XITEMVENDA.NUM_UNID = XSUBUNIDADE.NUM_UNID
    AND XITEMVENDA.NUM_SUB_UNID = XSUBUNIDADE.NUM_SUB_UNID)
    INNER JOIN XCOMPRADOR (NOLOCK)
    ON(XVENDA.NUM_VENDA = XCOMPRADOR.NUM_VENDA
    AND XVENDA.CODCOLIGADA = XCOMPRADOR.CODCOLIGADA)
    INNER JOIN FCFO (NOLOCK)
    ON(XCOMPRADOR.CODCOLCFO = FCFO.CODCOLIGADA
    AND XCOMPRADOR.CODCFO = FCFO.CODCFO)
    INNER JOIN XVENDACOMPL (NOLOCK) 
    ON(XVENDA.NUM_VENDA = XVENDACOMPL.NUMVENDA AND XVENDA.CODCOLIGADA = XVENDACOMPL.CODCOLIGADA)
    INNER  JOIN FLAN (NOLOCK)
    ON(XVENDAPARCELA.CODCOLIGADA = FLAN.CODCOLIGADA
    AND XVENDAPARCELA.IDLAN = FLAN.IDLAN)
    LEFT OUTER JOIN (SELECT XLP2.NUM_VENDA,
    XLP2.COD_TIPO_PARC,
    XLP2.NUM_PARC,
    XLP2.COD_GRUPO,
    MAX(XLP2.DAT_ULT_MNT) AS DT 
    FROM XLOGPARCELAPAGAMENTO XLP2 (NOLOCK)

    GROUP BY XLP2.NUM_VENDA,
    XLP2.COD_TIPO_PARC,
    XLP2.NUM_PARC,
    XLP2.COD_GRUPO

    )


    AS REAJ
    ON(XVENDAPARCELA.NUMVENDA = REAJ.NUM_VENDA
    AND XVENDAPARCELA.CODTIPOPARC = REAJ.COD_TIPO_PARC
    AND XVENDAPARCELA.NUMPARC = REAJ.NUM_PARC
    AND XVENDAPARCELA.CODGRUPO = REAJ.COD_GRUPO)
    LEFT OUTER JOIN XLOGPARCELAPAGAMENTO XLP (NOLOCK)
    ON(XVENDAPARCELA.NUMVENDA = XLP.NUM_VENDA
    AND XVENDAPARCELA.CODTIPOPARC = XLP.COD_TIPO_PARC
    AND XVENDAPARCELA.NUMPARC = XLP.NUM_PARC
    AND XVENDAPARCELA.CODGRUPO = XLP.COD_GRUPO
    AND REAJ.DT = XLP.DAT_ULT_MNT)
    LEFT OUTER  JOIN XREGRACOMPONENTEVENDA XRC (NOLOCK)
    ON (XRC.NUM_VENDA = XVENDAPARCELA.NUMVENDA
    AND XRC.COD_COMPN = XVENDAPARCELA.CODTIPOPARC
    AND XRC.COD_GRUPO = XVENDAPARCELA.CODGRUPO)

    LEFT OUTER JOIN (SELECT vr_tx_per,
                                   num_venda,
                                   cod_grupo
                            FROM   xregracomponentevenda
                            WHERE  xregracomponentevenda.cod_compn = 3) XRJ
             ON ( XRJ.num_venda = xvendaparcela.numvenda
                  AND XRJ.cod_grupo = xvendaparcela.codgrupo )
           LEFT OUTER JOIN (SELECT COALESCE(Sum(FLI.valor), 0) AS VALOR,
                                   idlan,
                                   codcoligada
                            FROM   flanintegracao FLI
                            WHERE  ( FLI.idcampo = 3 )
                            GROUP  BY idlan,
                                      codcoligada) TXJUROS
             ON ( flan.idlan = TXJUROS.idlan
                  AND flan.codcoligada = TXJUROS.codcoligada )
           LEFT OUTER JOIN (SELECT COALESCE(Sum(FLI.valor), 0) AS VALOR,
                                   idlan,
                                   codcoligada
                            FROM   flanintegracao FLI
                            WHERE  FLI.idcampo IN( '4', '10', '24', '29',
                                                   '100', '105' )
                            GROUP  BY idlan,
                                      codcoligada) CORRECAO
             ON ( flan.idlan = CORRECAO.idlan
                  AND flan.codcoligada = CORRECAO.codcoligada )






            LEFT OUTER JOIN (select SUM(VALORJUROS+VALORMULTA+VALOROP7) AS VALOR,IDLAN,CODCOLIGADA
    FROM FLANBAIXA
    WHERE FLANBAIXA.STATUS = 0
    GROUP BY IDLAN,CODCOLIGADA) JUROS_COMP
             ON ( flan.idlan = JUROS_COMP.idlan
                  AND flan.codcoligada = JUROS_COMP.codcoligada )


           LEFT OUTER JOIN (SELECT Cast(Datepart(year, XV2.datultreajuste) AS VARCHAR(4)) + '-' + Cast(Datepart(month, Dateadd (m, -1, XV2.datultreajuste)) AS VARCHAR(4)) + '-' + Cast(Datepart(day, DATAVENC.datavencimento) AS VARCHAR(4)) AS DATAVENCIMENTO,
                                   DATAVENC.idlan,
                                   DATAVENC.codcoligada,
                                   DATAVENC.codcfo
                            FROM   flan DATAVENC
                                   INNER JOIN xvendaparcela XV2
                                     ON ( XV2.idlan = DATAVENC.idlan
                                          AND XV2.codcoligada = DATAVENC.codcoligada )) AUXDATA2
             ON ( flan.idlan = AUXDATA2.idlan
                  AND flan.codcoligada = AUXDATA2.codcoligada )
           LEFT OUTER JOIN (SELECT CASE
                                     WHEN CONVERT(DECIMAL(6, 2), Datediff(day, FL2.datavencimento, XV3.datultreajuste)) * ( -1 ) < 31 THEN CONVERT(DECIMAL(6, 2), Datediff(day, FL2.datavencimento, XV3.datultreajuste)) + CONVERT(DECIMAL(6, 2), Datediff(day, Dateadd (m, -1, FL2.datavencimento), FL2.datavencimento))
                                     ELSE 0
                                   END AS valor,
                                   FL2.idlan,
                                   FL2.codcoligada
                            FROM   flan FL2
                                   INNER JOIN xvendaparcela XV3
                                     ON ( XV3.idlan = FL2.idlan
                                          AND XV3.codcoligada = FL2.codcoligada ))DIFERENCA
             ON ( flan.idlan = DIFERENCA.idlan
                  AND flan.codcoligada = DIFERENCA.codcoligada )

    WHERE XCOMPRADOR.PRINCIPAL = 1
    AND XVENDA.COD_SIT_VENDA = 40
    AND FLAN.STATUSLAN IN ('0', '4')

    Mesmo erro, obrigado a todos que puderem ajudar.

    domingo, 12 de julho de 2020 23:25
  • O erro nao esta nesse script. verifique nas funcoes que o script chama.
    segunda-feira, 13 de julho de 2020 11:06
  • Boa Noite Amigos, 

    a SQL e enorme e ela me retorna o seguinte erro

    Mensagem 530, Nível 16, Estado 1, Linha 1
    The statement terminated. The maximum recursion 100 has been exhausted before statement completion.

    Horário de conclusão: 2020-07-11T19:02:08.3296958-03:00

    Obrigado a todos pela ajuda.


    Ronnie,

    Você esta utilizando alguma CTE Recursiva? Ou até mesmo visão que faz chamada interna a alguma outra Visão?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 16:01
  • Boa Noite Amigos, 

    a SQL e enorme e ela me retorna o seguinte erro

    Mensagem 530, Nível 16, Estado 1, Linha 1
    The statement terminated. The maximum recursion 100 has been exhausted before statement completion.

    Horário de conclusão: 2020-07-11T19:02:08.3296958-03:00

    Obrigado a todos pela ajuda.


    Ronnie,

    Você esta utilizando alguma CTE Recursiva? Ou até mesmo visão que faz chamada interna a alguma outra Visão?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 16:02
  • Boa Tarde ! 

    Eu fiz dessa forma 

    SELECT 

    FIN.DATAREFERENCIA,
    FIN.COLIGADA,
    FIN.EMPREE,
    FIN.UNIDADE,
    FIN.SUBUNIDADE,
    FIN.TIPOCONTRATO,
    FIN.FINANCIAMENTO,
    FIN.SITUACAOVENDA,
    FIN.TIPOPARCELA,
    FIN.NUMVENDA,
    FIN.CLIFOR,
    FIN.DATAVENC,
    FIN.VR_ORIG,
    FIN.SALDOCM,
    FIN.IGPM,
    FIN.DESCONTO,
    FIN.JUROS_COMP_VINCNEDO,
    FIN.JUROS_COMP,
    FIN.JUROS_MORA,
    FIN.MULTAVAL,
    FIN.VALCAP,
    FIN.VALBAIXA,
    FIN.DATABAIXA,
    FIN.FORMAPGTO,
    FIN.STATUSLAN,
    FIN.SALDO



    FROM
    (

    SQL 1

    UNION ALL

    SQL 2 

    UNION ALL

    SQL 3

    UNION ALL

    SQL 4

    )
    FIN(DATAREFERENCIA,COLIGADA,EMPREE,UNIDADE,SUBUNIDADE,TIPOCONTRATO,FINANCIAMENTO,SITUACAOVENDA,TIPOPARCELA,NUMVENDA,CLIFOR,DATAVENC,VR_ORIG,SALDOCM,IGPM,DESCONTO,
    JUROS_COMP_VINCNEDO,JUROS_COMP,JUROS_MORA,MULTAVAL,VALCAP,VALBAIXA,DATABAIXA,FORMAPGTO,STATUSLAN,SALDO)
    OPTION (MAXRECURSION 0)

    Dessa forma.

    segunda-feira, 13 de julho de 2020 16:51
  • Ronnie,

    Analise o seguinte trecho:

    SQL 1
    
    UNION ALL
    
    SQL 2 
    
    UNION ALL
    
    SQL 3
    
    UNION ALL

    Quando utilizamos o Union All o SQL Server vai tentar atender e satisfazer todos os retornos de dados, em alguns casos criando cadeias recursivas de processamento de dados, este pode ser o seu cenário, você já tentou trocar o Union All por Union.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 21:53
  • Amigos boa noite! tenso isso, eu comentei todos os cases da SQL retirei os UNION 

    dessa forma roda, agora fica um duvidas meu problema seria essas funções?

    Obrigado amigos

    SELECT DISTINCT
    CONVERT(DATE,GETDATE(), 103)  DATAREFERENCIA,
    XVENDA.CODCOLIGADA  COLIGADA,
    XVENDA.COD_PESS_EMPR  EMPREE,
    XSUBUNIDADE.NUM_UNID  UNIDADE,
    --------------------------------------------------------------------------------------------------------
    CASE
    WHEN FLAN.VALORBAIXADO = 0
    THEN FLAN.VALORORIGINAL
    ELSE 
    (SELECT TOP 1 COALESCE(FLOGVALORES.VALORORIGINAL,0) FROM FLOGVALORES  WHERE FLOGVALORES.IDLAN = FLAN.IDLAN  AND FLOGVALORES.CODCOLIGADA = FLAN.CODCOLIGADA ORDER BY IDLOG DESC)
    END AS VR_ORIG,
    --------------------------------------------------------------------------------------------------------
    ISNULL(DBO.ACUMULADO_SALDOCM2(XVENDAPARCELA.IDLAN,XVENDAPARCELA.CODCOLIGADA),0) AS 'SALDOCM',
    --------------------------------------------------------------------------------------------------------

       /*    ((isnull(FLAN.VALORORIGINAL, 0)+CORRECAO.VALOR+ISNULL(TXJUROS.VALOR,0)+ISNULL(JUROS_COMP.VALOR,0))-FLAN.VALORBAIXADO)
    *isnull(dbo.Acumulado_IgpmVencimento(flan.dataop1, XVENDA.NUM_VENDA, XVENDAPARCELA.NUMPARC, XVENDAPARCELA.CODTIPOPARC, XVENDAPARCELA.CODGRUPO),0)
    AS IGPM,*/

    FROM ............

    ----------------------------------------------

    Amigos a Estrutura da função : [dbo].[Acumulado_IgpmVencimento]



    CREATE FUNCTION [dbo].[Acumulado_IgpmVencimento] (@Data Datetime, @NUM_VENDA int, @NUM_PARC int, @COD_TIPO_PARC int, @COD_GRUPO int)
    RETURNS DECIMAL(30,20)
    AS
    BEGIN
    DECLARE @i DECIMAL(30,20)
    SET @i = 1

    ;WITH CTE AS
    (
       select case
    when FLAN.DATAVENCIMENTO >= flan.DATAOP1
    then NULL
    else case
    when datepart(day, flan.DATAOP1) > datepart(day, FLAN.DATAVENCIMENTO)
    then dateadd(month, 1, convert(datetime, convert(varchar, datepart(year, flan.DATAOP1)) + '-' + convert(varchar, datepart(month, flan.DATAOP1)) + '-01', 120))
    else convert(datetime, convert(varchar, datepart(year, flan.DATAOP1)) + '-' + convert(varchar, datepart(month, flan.DATAOP1)) + '-01', 120)
    .................................................................................
    • Editado Ronnie Von terça-feira, 14 de julho de 2020 01:46 Outros
    terça-feira, 14 de julho de 2020 01:10
  • Ronnie,

    Afirmar sem conhecer o seu ambiente eu não posso dizer, mas que você vai precisar analisar e rever a quantidade de linhas duplicadas ou recursivamente suas funções estão sendo processadas você vai.

    Pegue a primeira função, faça a execução dele em separado, análise o que esta sendo retorno, bem como, o que pode ser alterado no código fonte, se for o caso, direcione o resultado para uma outra tabela, sendo assim, você poderá estabelecer a união ou até mesmo a junção em esta nova tabela com a massa de dados já definida.

    Particularmente falando, eu analisaria a possibilidade de transformar os resultados de cada função em tabelas temporárias, já com os dados necessários para junções definidas em cada uma delas, estabelecer junções entre tabelas acaba sendo mais interessante do que estabelecer Unions entre Selects distintos.

    Avalise também a possibilidade caso necessário de utilizar o operador Outer Apply!

    Aproveito, recomendo que você não compartilhe o seu código fonte por completo, este é um lugar público, as vezes sem querer você pode estar compartilhando regras de negócio da sua empresa.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    terça-feira, 14 de julho de 2020 01:22