1
resposta

Como executar os blocos de código em sequência automático PLSQL , Existe outro problema que refere se a execução dos blocos de insert, estou tendo que rodar duas vezes para que o insert seja realizado.

CREATE OR REPLACE PROCEDURE CONTROLE_ENTRADA_SAIDA_MP

--/CRIA TABELA TEMPORÁRIA PARA RECEBER AS ENTRADAS CREATE GLOBAL TEMPORARY TABLE TB_ENTRADAS_TEMP ( COD_ENTRADA_TEMP NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, -- NUNOTA NUMBER, CODPARC NUMBER, NOMEPARC VARCHAR2(200),--CODTIPOPER NUMBER, CODPROD NUMBER, CODVOL VARCHAR2(2), QTDNEG FLOAT, DTMOV DATE, PRIMARY KEY (COD_ENTRADA_TEMP) );

--/REALIZAR O INSERT DOS DADOS NA TABELA TEMPORÁRIA TB_ENTRADAS_TEMP INSERT INTO TB_ENTRADAS_TEMP ( CODPARC, NOMEPARC, CODPROD , CODVOL , QTDNEG , DTMOV ) SELECT CAB1.CODPARC AS "CODIGO PARCEIRO", PAR1.NOMEPARC AS "NOME PARCEIRO", PRO1.CODPROD AS "CODIGO PRODUTO", ITE1.CODVOL "UNIDADE DE MEDIDA", SUM(ITE1.QTDNEG) AS "QUANTIDADE ENTRADA", CAB1.DTMOV FROM TGFCAB CAB1 INNER JOIN TGFITE ITE1 ON (ITE1.NUNOTA = CAB1.NUNOTA) INNER JOIN TGFPRO PRO1 ON (PRO1.CODPROD = ITE1.CODPROD) INNER JOIN TGFPAR PAR1 ON (PAR1.CODPARC = CAB1.CODPARC) WHERE (CAB1.CODPARC IN (11550,11551,63352,30334,65366)) AND PRO1.CODGRUPOPROD BETWEEN '3000100' AND '3000500' AND CAB1.CODTIPOPER IN (2110, 2109) AND ITE1.CODVOL IN ('KG','TN') AND ITE1.STATUSNOTA='L' GROUP BY CAB1.CODPARC,PRO1.CODPROD,ITE1.CODVOL,PAR1.NOMEPARC,CAB1.DTMOV--,IMP1.QTD, "QUANTIDADE DE REGISTROS"

--/CRIA TABELA TEMPORÁRIA PARA RECEBER AS SAÍDAS CREATE GLOBAL TEMPORARY TABLE TB_SAIDAS_TEMP ( COD_SAIDA_TEMP NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, CODPARC NUMBER, CODPROD NUMBER, QTDNEG FLOAT, PRIMARY KEY (COD_SAIDA_TEMP) ); --/REALIZA O INSERT DOS DADOS NA TABELA TEMPORÁRIA TB_SAÍDAS_TEMP INSERT INTO TB_SAIDAS_TEMP ( CODPARC, CODPROD, QTDNEG ) SELECT DISTINCT CAB.CODPARC,PRO.CODPROD, SUM(QTDNEG) AS "SAIDAS"

--TO_CHAR(CAB.DTMOV, 'DD/MM/YYYY') AS "DATA MOVIMENTAÇÃO" FROM TGFCAB CAB INNER JOIN TGFITE ITE ON (ITE.NUNOTA = CAB.NUNOTA) INNER JOIN TGFPRO PRO ON (PRO.CODPROD = ITE.CODPROD) WHERE (CAB.CODPARC IN (11550,11551,63352,30334,65366)) AND PRO.CODGRUPOPROD BETWEEN '3000100' AND '3000500' AND ITE.CODVOL IN ('KG','TN') AND ITE.STATUSNOTA='L' AND CAB.CODTIPOPER IN (3296,2204,3204) GROUP BY CAB.CODPARC, PRO.CODPROD --TO_CHAR(CAB.DTMOV, 'DD/MM/YYYY') --ORDER BY TO_CHAR(CAB.DTMOV, 'DD/MM/YYYY') DESC

---/QUERY PARA O RELATÓRIO DE ACOMPANHAMENTO DE ENTRADA E SAÍDA. SELECT TEMPE.CODPARC AS "CODIGO PARCEIRO", TEMPE.NOMEPARC AS "NOME PARCEIRO", TEMPE.CODPROD,TEMPE.CODVOL, TEMPE.QTDNEG AS "ENTRADA", SIMP.QTD AS "SINICIAL", SUM(TEMPE.QTDNEG + SIMP.QTD) AS "SALDO INICIAL", TEMPS.QTDNEG AS "SAIDAS", SUM(TEMPS.QTDNEG - (TEMPE.QTDNEG + SIMP.QTD)) AS "SALDO NO PARCEIRO" FROM TB_ENTRADAS_TEMP TEMPE INNER JOIN AD_TGFSIMP SIMP ON TEMPE.CODPARC = SIMP.CODPARC AND TEMPE.CODPROD=SIMP.CODPROD INNER JOIN TB_SAIDAS_TEMP TEMPS ON TEMPS.CODPARC = SIMP.CODPARC AND TEMPS.CODPROD=SIMP.CODPROD GROUP BY TEMPE.CODPARC,TEMPE.NOMEPARC,TEMPE.CODPROD,TEMPE.CODVOL,TEMPE.QTDNEG,SIMP.QTD,TEMPS.QTDNEG

  DROP TABLE TB_ENTRADAS_TEMP
  DROP TABLE TB_SAIDAS_TEMP
1 resposta

Olá Leonildo, tudo bem?

Peço desculpas pela demora no retorno.

Como já vimos sobre este problema, aqui neste outro tópico e você informou que já ressolveu o problema, vou fechar esse tópico aqui para você, está bem?!

Bons estudos!