Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 15 anos atrás por ronaldobim.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #98540
    ronaldobim
    Participante

      Pessoal, estou com o seguinte problema, tenho uma consulta SQL utilizada para retornar os dados da NF para impressão da danfe, como tempos várias tabelas envolvidas neste SQL tenho uma consulta com 32 left joins.

      Quando executo esta consulta no SQL Developer retorna a seguinte mensagem de erro (Não serão lidos mais dados do soquete) e a conexão com a base é perdida. Se eu comentar qualquer um dos left join funciona.

      Isso está ocorrendo apenas no cliente que utiliza o Oracle em servidor Linux, no meu PC por exemplo que uso com windows o SQL roda normal. E o mais estranho é que estava funcionando, e do nada parou de funcionar. Temos outros clientes com Oracle no linux e a consulta funciona também.

      Se alguém, puder ajudar fico grato.
      OBS: é Oracle 11g em linux Had Hat 64

      #98545
      ghiggi
      Participante

        Disponibiliza a consulta SQL que posso tentar lhe ajudar a otimizá-la.

        #98549
        ronaldobim
        Participante

          Olá, segue o SQL, este SQL não dá o problema pois foi tirado um ou dois left e fiz outro pequeno select.

          SELECT
          — DADOS DA NF
          CASE
          WHEN ASCII(NFCFG.ENTRADASAIDA) = 83 THEN 1
          WHEN ASCII(NFCFG.ENTRADASAIDA) = 69 THEN 2
          END AS ENTSAI,
          NFCFG.DESCRICAO AS DESCNFCFG,
          NFCFG.CASASDECUNIT, NFCFG.CASASDECUNITDANFE,
          NFCFG.IMPDESCTOSEP, NFCFG.IMPRECIBFIX,
          NFCFG.GRUPOFAMILIAR,
          NFCFG.ENTRADASAIDA,
          NFCFG.NATUREZADAOPERACAO,

          NFCAB.EMITENFE AS TIPOEMISSAO,
          NFCAB.ESTAB AS EMPRESA,
          NFCAB.ESTAB, NFCAB.SEQNOTA,
          –O campo ESTAB_SEQNOTA é utilizado para quebra de grupos no ReportBuilder
          NFCAB.ESTAB || CHR(45) || NFCAB.SEQNOTA AS ESTAB_SEQNOTA,
          NFCAB.SERIE || CHR(45) || NFCAB.NOTA AS NRONF,
          NFCAB.CHAVEACESSONFE,
          NFCAB.SERIE,
          NFCAB.NOTA AS NUMERO,
          NFCAB.NPROTAUTORIZA,
          NFCAB.DTAUTORIZANFE,
          NFCAB.VLRIMPNFANT,
          NFCAB.SAFRA AS SAFRA_CAB,
          CFOP.NOME AS DESCCFOP,
          CONFDANFE.REFCOMP AS CONFDANFE_REFCOMP,
          CONFDANFE.IMPLOTE AS CONFDANFE_IMPLOTE,
          CONFDANFE.LOGO AS CONFDANFE_LOGO,
          CONFDANFE.IMPENDEMIT AS CONFDANFE_IMPENDEMIT,
          CONFDANFE.NATOPER AS CONFDANFE_NATOPER,
          CONFDANFE.VALORTOTAL AS CONFDANFE_VALORTOTAL,
          CONFDANFE.IMPPH AS CONFDANFE_IMPPH,
          CONFDANFE.IMPSAFRA AS CONFDANFE_IMPSAFRA,
          CONFDANFE.MSGCONTRATO AS CONFDANFE_MSGCONTRATO,
          CONFDANFE.VLRTOTPROD AS CONFDANFE_VLRTOTPROD,
          CONFDANFE.DOCPEND,
          CONFDANFE.IMPLGLOTE,
          CONFDANFE.IMPLGVALIDADE,
          CONFDANFE.IMPLGFABRICANTE,
          CONFDANFE.IMPLGREGISTROFAB,
          CONFDANFE.IMPLGQUANTIDADE,
          CONFDANFE.IMPLGPESO,
          CONFDANFE.IMPLGREGISTROPROD,
          CONFDANFE.IMPLSLOTE,
          CONFDANFE.IMPLSGERMINACAO,
          CONFDANFE.IMPLSATESTADO,
          CONFDANFE.IMPLSPUREZA,
          CONFDANFE.IMPLSVARIEDADE,
          CONFDANFE.IMPLSPENEIRA,
          CONFDANFE.IMPLSVALIDADE,
          CONFDANFE.IMPLSCATEGORIA,
          CONFDANFE.IMPLSSAFRA,
          CONFDANFE.IMPLSESPECIE,
          CONFDANFE.IMPLSCULTIVAR,
          CONFDANFE.IMPLSQUANTIDADE,
          CONFDANFE.IMPLSPESO,
          CONFDANFE.IMPLSNOMEPROD,
          CONFDANFE.IMPLSRENASEM,
          CONFDANFE.IMPLSBOLETIM,
          CONFDANFE.IMPLSPMS,
          CONFDANFE.IMPLVLOTE,
          CONFDANFE.IMPLVMESFAB,
          CONFDANFE.IMPLVANOFAB,
          CONFDANFE.IMPLVVALIDADE,
          CONFDANFE.IMPLVFABRICANTE,
          CONFDANFE.IMPLVQUANTIDADE,
          CONFDANFE.IMPLDLOTE,
          CONFDANFE.IMPLDDATAVALIDADE,
          CONFDANFE.IMPLDDATAFABRICACAO,
          CONFDANFE.IMPLDQUANTIDADE,
          CONFDANFE.IMPNROPED,
          CONFDANFE.IMPREPRE,
          CONFDANFE.IMPUSER,
          CONFDANFE.DADOSEMIT,
          CONFDANFE.IMPREPRENOME,
          PREPRESE.DESCRICAO AS NOMEREPRESENT,
          NFCFG.NACIMPEXP,
          NFCAB.EXPNCM,
          NFCAB.EXPRE,
          NFCAB.EXPVLRFOB,
          NFCAB.EXPTXDOLAR,
          NFCAB.EXPNAVIO,
          NFCAB.EXPDESCITEM,
          NFCAB.EXPEMBALAGEM,
          NFCAB.USERID,

          /* DADOS DO EMITENTE */
          EMI.CGC AS CNPJEMI,
          EMI.NOME AS NOMEEMI,
          EMI.FANTASIA AS FANTASIAEMI,
          EMI.NOME AS RAZAOSOCIALEMI,
          EMI.ENDERECO AS ENDERECOEMI,
          EMI.BAIRRO AS BAIRROEMI,
          EMI.NUMERO AS NUMEROEMI,
          EMI.COMPLEMENT AS COMPLEMENTOEMI,
          CIDEMI.NOME AS NOMECIDADEEMI,
          CIDEMI.UF AS UFEMI,
          EMI.TELEFONE AS TELEMI,
          EMI.FAX AS FAXEMI,
          EMI.CEP AS CEPEMI,
          EMI.INSCESTAD AS INSESTADEMI,
          EMI.LOGOTIPO,

          — DADOS DO DESTINATÁRIO
          DEST.NOME || CHR(45) || DEST.NUMEROCM AS NOMECLI,
          DEST.CNPJF AS CNPJCLI,
          COALESCE(END_ALTERNATIVO.ENDERECO, DEST.ENDERECO) AS ENDERECOCLI,
          COALESCE(END_ALTERNATIVO.BAIRRO, DEST.BAIRRO) AS BAIRROCLI,
          COALESCE(END_ALTERNATIVO.CEP, DEST.CEP) AS CEPCLI,
          COALESCE(CID_END_ALTERNATIVO.NOME, CIDDEST.NOME) AS NOMECIDADECLI,
          COALESCE(END_ALTERNATIVO.TELEFONE, DEST.TELEFONE) AS TELCLI,
          COALESCE(CID_END_ALTERNATIVO.UF, CIDDEST.UF) AS UFCLI,
          COALESCE(UF_END_ALTERNATIVO.CODIGO, UFDEST.CODIGO) AS CUF,
          COALESCE(END_ALTERNATIVO.NUMEROEND, DEST.NUMEROEND) AS NUMEROENDCLI,
          CASE
          WHEN DEST.SEXO CHR(74) THEN COALESCE(END_ALTERNATIVO.CREDENCIALAGRO, DEST.CREDENCIALAGRO)
          ELSE COALESCE(END_ALTERNATIVO.CREDENCIALAGRO, DEST.INSCESTAD)
          END AS INSCESTADCLI,

          NFCAB.DTEMISSAO,
          NFCAB.DTENTSAI AS DTSAIDA,
          NFITEM.HORA AS HRSAIDA,

          — TOTAIS DOS IMPOSTOS
          ICMS.BASETRIBUTADA AS BASEICMS,
          ICMS.VALORIMPOSTO AS VLRICMS,
          ICMS.BASEST AS BASEICMSSU,
          ICMS.VALORSUBSTITUICAO AS VLRICMSSUB,

          NFFRETE.VALORFRETE AS FRETE,
          NFFRETE.VALORSEGURO AS SEGURO,
          NFFRETE.FRETEBASE,
          NFFRETE.FRETEICMS,

          COALESCE(NFDESC.VALORDESCONTO, 0) + COALESCE(NFDESC.VALORDESCONTOMAOOBRA, 0) AS DESCONTOS,
          COALESCE(NFCAB.DESPACESSORIA,0) + COALESCE(NFCAB.OUTROSACRESC,0) AS OUTROS,
          NFDESC.IMPOSTODESC, NFDESC.IMPOSTODESCNOME, NFDESC.IMPOSTODESCTOTNF,
          NFDESC.IMPOSTODESCNOMETOTNF,
          NFDESC.IMPOSTONAOINCTOTFINN, NFDESC.IMPOSTONAOINCNOMETOT,

          /* Utilizado em um PegaCampo no OnPrint da variavel vVlrIPI – Lentidão no Oracle
          IPI.VALORIMPOSTO AS VLRIPI,*/
          CONFAGROE.IMPOSTOIPI,

          — DADOS DO FRETE
          COALESCE(NFTRANSP.NOMEINFORMADO, PRESTADOR.NOME) AS NOMEPRE,
          CASE NFTRANSP.FRETEPORCONTA WHEN CHR(69) THEN 1 ELSE 2 END AS FRETEPORCONTA,
          NFTRANSP.PLACA AS VEICULO,
          NFTRANSP.UFPLACA AS UFVEICULO,
          CASE
          WHEN (NFTRANSP.CPF IS NOT NULL) AND (NFTRANSP.CPF CHR(32)) THEN NFTRANSP.CPF
          WHEN (NFTRANSP.CGC IS NOT NULL) AND (NFTRANSP.CGC CHR(32)) THEN NFTRANSP.CGC
          ELSE PRESTADOR.CNPJF
          END AS CNPJPRE,
          COALESCE(NFTRANSP.ENDERECO, PRESTADOR.ENDERECO) AS ENDERECOPRE,
          COALESCE(CIDNFTRANSP.NOME, CIDPRE.NOME) AS NOMECIDADEPRE,
          COALESCE(CIDNFTRANSP.UF, CIDPRE.UF) AS UFPRE,
          CASE
          WHEN (NFTRANSP.INSCPRODUTOR IS NOT NULL) AND (NFTRANSP.INSCPRODUTOR CHR(32)) THEN NFTRANSP.INSCPRODUTOR
          WHEN (NFTRANSP.INSCESTAD IS NOT NULL) AND (NFTRANSP.INSCESTAD CHR(32)) THEN NFTRANSP.INSCESTAD
          WHEN (PRESTADOR.CREDENCIALAGRO IS NOT NULL) AND (PRESTADOR.CREDENCIALAGRO CHR(32)) THEN PRESTADOR.CREDENCIALAGRO
          ELSE PRESTADOR.INSCESTAD
          END AS INSCESTADPRE,
          NFTRANSP.QUANTIDADE AS QTDTRANSP,
          NFTRANSP.ESPECIE AS ESPECIETRANSP,
          NFTRANSP.MARCA AS MARCATRANSP,
          NFTRANSP.PESOBRUTO AS PESOBRUTOTRANSP,
          NFTRANSP.PESOLIQUIDO AS PESOLIQUIDTRANSP,
          NFMSG.MENSAGEM, NFMSG.MSGTRIB, NFCAB.OBSFISCALGER, NFMSG.MSGFISCO,
          NFCAB.RECID_RESERVADO, NFCAB.RECID_RESERVADO2, NFMSGCAD.MSG,
          COALESCE(NFCAB.VALORPROD, 0) – COALESCE(NFCAB.VLRNFANT, 0) AS TOTPRODUTOS,
          NFCAB.VALOR,
          COALESCE(NFCAB.VALORPRODBRUTO,
          (COALESCE(NFCAB.VALORPROD,0) – COALESCE(NFCAB.VLRNFANT,0) –
          COALESCE(NFDESC.VALORDESCONTO, 0))) AS VALORPRODBRUTO,
          NFCAB.VLRNFANT,

          /DADOS DOS PRODUTOS/
          NFITEM.ITEM,
          ITEMAGRO.DESCRICAO,
          ITEMAGRO.LOTECTRL,
          PCLASFIS.NCM AS NBMSH,
          NFITEMIMPOSTO_ICMS.CST,
          NFITEM.CFOP AS CFOP,
          ITEMAGRO.UNIDADE,
          NFITEM.QUANTIDADE,
          NFITEM.SEQNOTAITEM,
          NFITEM.EMBALAGEM,
          NFITEM.BONIFICACAO,
          NFITEM.VALORUNITARIO,

          CASE
          WHEN COALESCE(CONFDANFE.VLRUNILIQ, CHR(78)) = CHR(83) THEN

            CASE WHEN NFITEM.QUANTIDADE = 0 THEN
              ROUND(NFITEM.VALORTOTAL, NFCFG.CASASDECUNITDANFE)
            ELSE
              ROUND((NFITEM.VALORTOTAL / NFITEM.QUANTIDADE), NFCFG.CASASDECUNITDANFE)
            END
          
          ELSE
          
            CASE WHEN NFITEM.QUANTIDADE = 0 THEN
              ROUND(COALESCE(NFITEM.VALORUNITARIO, NFITEM.VALORTOTAL+COALESCE(NFITEM.DESCTOTAL,0)),
                NFCFG.CASASDECUNITDANFE)
            ELSE
              ROUND(COALESCE(NFITEM.VALORUNITARIO, NFITEM.VALORTOTAL+COALESCE(NFITEM.DESCTOTAL,0) / NFITEM.QUANTIDADE),
                NFCFG.CASASDECUNITDANFE)
            END
          

          END AS VLRUNIT,
          NFITEM.VALORTOTAL AS VLRTOTAL,
          NFITEMIMPOSTO_ICMS.BASETRIBUTADA AS BASEICMS_ITEM,
          NFITEMIMPOSTO_ICMS.VALORIMPOSTO AS VLRICMS_ITEM,
          NFITEMIMPOSTO_ICMS.ALIQUOTA AS ALIQICMS_ITEM,
          NFITEMIMPOSTO_IPI.VALORIMPOSTO AS VALORIPI_ITEM,
          NFITEMIMPOSTO_IPI.ALIQUOTA AS ALIQIPI_ITEM,
          NFITEM.COMPLEMENTO, ITEMAGRO.REFERENCIA, NFITEM.PH,
          SAFRA_ITEM.DTINICIAL AS SAFRAITEM_INICIO,
          NFITEM.RENDARROZGRAOINT, NFITEM.RENDARROZGRAOQUE,
          NFITEM.RENDARROZCASCA, NFITEM.RENDARROZFARELO,
          CONFDANFE.DESCUNI, NFITEM.DESCTOTAL,
          LEPRECOPESSOA.MSGNF AS LEPRECOPESSOA_MSGNF,
          NFCABTXARM.DESCNOME, NFCABTXARM.DESCVALOR, NFCAB.REPRESENT,
          NFCAB.NOTACONF, NFCAB.NUMEROCM, NFCFG.PESFINORIGFIXTRANSF ,
          NFCFG.IMPRIMEPRECOEBONIFICACAO

          FROM NFCAB

          LEFT JOIN NFITEM
          ON (NFITEM.ESTAB = NFCAB.ESTAB)
          AND (NFITEM.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN CFOP
          ON (CFOP.CFOP = NFITEM.CFOP)

          LEFT JOIN SAFRAS SAFRA_ITEM
          ON (SAFRA_ITEM.SAFRA = NFITEM.SAFRA)

          LEFT JOIN ITEMAGRO
          ON (ITEMAGRO.ITEM = NFITEM.ITEM)

          LEFT JOIN PCLASFIS
          ON (ITEMAGRO.CLASFISCAL = PCLASFIS.CLASFISCAL)

          LEFT JOIN NFCFG
          ON (NFCFG.NOTACONF = NFCAB.NOTACONF)

          LEFT JOIN NFMSGCAD
          ON NFMSGCAD.CODMSG = NFCFG.CODMSG

          LEFT JOIN NFCABTXARM
          ON (NFCABTXARM.ESTAB = NFCAB.ESTAB)
          AND (NFCABTXARM.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN PREPRESE
          ON(NFCAB.REPRESENTESTAB = PREPRESE.EMPRESA)
          AND(NFCAB.REPRESENT = PREPRESE.REPRESENT)

          LEFT JOIN PEMPRESA EMI
          ON (EMI.EMPRESA = NFCAB.ESTAB)

          LEFT JOIN CIDADE CIDEMI
          ON (CIDEMI.CIDADE = EMI.CIDADE)

          LEFT JOIN NFDESC
          ON (NFDESC.ESTAB = NFCAB.ESTAB)
          AND (NFDESC.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN NFMSG
          ON (NFMSG.ESTAB = NFCAB.ESTAB)
          AND (NFMSG.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN CONFAGROE
          ON (CONFAGROE.ESTAB = NFCAB.ESTAB)

          LEFT JOIN CONFDANFE
          ON (CONFDANFE.ESTAB = NFCAB.ESTAB)

          LEFT JOIN NFTRANSP
          ON (NFTRANSP.ESTAB = NFCAB.ESTAB)
          AND (NFTRANSP.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN NFFRETE
          ON (NFCAB.ESTAB = NFFRETE.ESTAB)
          AND (NFCAB.SEQNOTA = NFFRETE.SEQNOTA)

          LEFT JOIN LEPRECOPESSOA
          ON (LEPRECOPESSOA.ESTAB = NFCAB.ESTAB)
          AND (LEPRECOPESSOA.SEQNOTA = NFCAB.SEQNOTA)

          LEFT JOIN CIDADE CIDNFTRANSP
          ON (CIDNFTRANSP.CIDADE = NFTRANSP.CIDADE)

          LEFT JOIN ENDERECO END_ALTERNATIVO
          ON (END_ALTERNATIVO.NUMEROCM = COALESCE(NFCAB.CLIENTEIMP, NFCAB.NUMEROCM))
          AND (END_ALTERNATIVO.SEQENDERECO = NFCAB.SEQENDERECO)

          LEFT JOIN CIDADE CID_END_ALTERNATIVO
          ON (CID_END_ALTERNATIVO.CIDADE = END_ALTERNATIVO.CIDADE)

          LEFT JOIN UF UF_END_ALTERNATIVO
          ON (UF_END_ALTERNATIVO.UF = CID_END_ALTERNATIVO.UF)

          LEFT JOIN CONTAMOV DEST
          ON (DEST.NUMEROCM = COALESCE(NFCAB.CLIENTEIMP, NFCAB.NUMEROCM))

          LEFT JOIN CIDADE CIDDEST
          ON (DEST.CIDADE = CIDDEST.CIDADE)

          LEFT JOIN UF UFDEST
          ON (UFDEST.UF = CIDDEST.UF)

          LEFT JOIN CONTAMOV PRESTADOR
          ON (PRESTADOR.NUMEROCM = NFTRANSP.PRESTADOR)

          LEFT JOIN CIDADE CIDPRE
          ON (CIDPRE.CIDADE = PRESTADOR.CIDADE)

          LEFT JOIN NFCABIMPOSTO ICMS
          ON (ICMS.ESTAB = NFCAB.ESTAB)
          AND (ICMS.SEQNOTA = NFCAB.SEQNOTA)
          AND (ICMS.IMPOSTO = CONFAGROE.IMPOSTOICMS)
          AND ((EMI.MSGSIMPLES IS NULL) OR (EMI.MSGSIMPLES = CHR(32)))

          /LEFT JOIN NFCABIMPOSTO IPI
          ON (IPI.ESTAB = NFCAB.ESTAB)
          AND (IPI.SEQNOTA = NFCAB.SEQNOTA)
          AND (IPI.IMPOSTO = CONFAGROE.IMPOSTOIPI)
          /

          LEFT JOIN NFITEMIMPOSTO NFITEMIMPOSTO_ICMS
          ON (NFITEMIMPOSTO_ICMS.ESTAB = NFITEM.ESTAB)
          AND (NFITEMIMPOSTO_ICMS.SEQNOTA = NFITEM.SEQNOTA)
          AND (NFITEMIMPOSTO_ICMS.SEQNOTAITEM = NFITEM.SEQNOTAITEM)
          AND (NFITEMIMPOSTO_ICMS.IMPOSTO = CONFAGROE.IMPOSTOICMS)
          AND ((EMI.MSGSIMPLES IS NULL) OR (EMI.MSGSIMPLES = CHR(32)))

          LEFT JOIN NFITEMIMPOSTO NFITEMIMPOSTO_IPI
          ON (NFITEMIMPOSTO_IPI.ESTAB = NFITEM.ESTAB)
          AND (NFITEMIMPOSTO_IPI.SEQNOTA = NFITEM.SEQNOTA)
          AND (NFITEMIMPOSTO_IPI.SEQNOTAITEM = NFITEM.SEQNOTAITEM)
          AND (NFITEMIMPOSTO_IPI.IMPOSTO = CONFAGROE.IMPOSTOIPI)

          WHERE (NFCAB.ESTAB = :ESTAB) AND (NFCAB.SEQNOTA)

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.