- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 12 meses atrás por jurupoc.
-
AutorPosts
-
29 de novembro de 2011 às 10:35 pm #101925AthaydeParticipante
Boa tarde Senhores(as) estou com um problema atípico, preciso alterar o conteúdo de um cursor dinamicamente em uma procedure no banco oracle 10, estava pesquisando o comando DBMS_Sql mas não consegui nenhum exemplo pratico que me atendesse, o mais perto que cheguei foi um exemplo que usa array que não me serve pois não sei a quantidade de linhas.
Eu preciso fazer o seguinte:
Preciso montar o SQL dinamicamente para poder através dele, abrir um cursor pelo qual vou ler tratar e gravar seus dados em uma tabela temporária.
Se alguém tiver um exemplo prático que me atenda agradeceria muito.2 de dezembro de 2011 às 1:30 am #101998IshiiParticipanteOlá,
Antes até de tentar resolver o problema eu consultei um pouco no google…
http://www.viamais.net/blog/?p=2585
Tinha certeza que funcionava mas resolvi pesquisar antes e já achei vários exemplos…
[]s Ishii
6 de dezembro de 2011 às 5:18 pm #102035jurupocParticipanteVeja se ajuda:
CREATE OR REPLACE
PROCEDURE calculo_tblprogcompras (
NLOJA_ESTOQUE NUMBER,
NDEP_ESTOQUE NUMBER,
NLOJA_INSP NUMBER,
NDEP_INSP NUMBER,
NVALOR_VARIAVEL_PRO_DIARIA NUMBER,
NPARAMETROS_SELECT VARCHAR2)AS TYPE cur_typ IS REF CURSOR;
nPRO_CODIGO NUMBER(10,0);
nLJA_CODIGO NUMBER(10,0);
nRED_PRODUTO_KEY NUMBER(10,0);
nCLF_CODIGO NUMBER;
nCLF_RAZNOM VARCHAR2(60);
nPRO_MASKCOD VARCHAR2(20);
nPRO_DESCRICAO VARCHAR2(80);
nPRO_UNIDADE VARCHAR2(3);
nACA_CODIGO NUMBER(10,0);
nPAD_DESCRICAO VARCHAR2(20);
nCONS30D NUMBER;
nEST_INSP_EMP NUMBER;
nPED_NO_FORNECEDOR NUMBER;
nPEDIR_PARA_CARTEIRA NUMBER;
nPEDIR_PROG NUMBER;
nEXCESSO_FORNECEDOR NUMBER;
nDR NUMBER(10,0);
nPRO_LOTE_REPOSICAO NUMBER(15,3);
nPRO_PTO_REPOSICAO NUMBER(15,3);
nPEDIR NUMBER;
nTOC_PRECO NUMBER;
nLOTE NUMBER;
nVLR_LOTE NUMBER;
nCOLUNAD NUMBER;
nVR_EXC NUMBER;
nNEC_CARTEIRA NUMBER;
nNEC_PROGRAMA NUMBER;
nREC_CARTEIRA NUMBER;
nREC_PROGRAMA NUMBER;
nNUMERO_OC NUMBER;
nSEM_DE_FATO CHAR(11);
nSEM_DE_FATO2 CHAR(12);
nPRAZO VARCHAR2(100);
nPRO_ESTMINIMO NUMBER(15,3);
nRED_PROD_KEY_FICHATEC NUMBER;
nQtdeTransferencia NUMBER(15,4);
nSOMACONS30D NUMBER;
nSOMANEC_CARTEIRA NUMBER;
nVALOR_ESTOQUE NUMBER;
nNQTDE_PEDIDO NUMBER;
v_QUERY_STR VARCHAR2(32000);
c CUR_TYP;BEGIN
DELETE FROM TEMP_COMPRAS;
v_QUERY_STR:= 'SELECT
PRODUTO.PRO_CODIGO,
PRODUTO.LJA_CODIGO,
PRODUTO.RED_PRODUTO_KEY,
(SELECT
MAX(CAPA_ORDEM_COMPRA.CLF_CODIGO)
FROM
TABELA_ORDEM_COMPRA
JOIN CAPA_ORDEM_COMPRA ON (
TABELA_ORDEM_COMPRA.LJA_CODIGO = CAPA_ORDEM_COMPRA.LJA_CODIGO AND
TABELA_ORDEM_COMPRA.COC_NUMERO = CAPA_ORDEM_COMPRA.COC_NUMERO AND
CAPA_ORDEM_COMPRA.COC_STATUS = '||chr(39)||'A'||chr(39)||')
WHERE
PRODUTO.LJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO_RED AND
PRODUTO.RED_PRODUTO_KEY = TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY) "CLF_CODIGO",
'||chr(39)||'CLF_RAZNOM'||chr(39)||' "CLF_RAZNOM",
PROPRODUTOS.PRO_MASKCOD,
PROPRODUTOS.PRO_DESCRICAO,
PROPRODUTOS.PRO_UNIDADE,
PROPRODUTOS.ACA_CODIGO,
(SELECT
PROPADROES.PAD_DESCRICAO
FROM
PROPADROES
WHERE
PROPADROES.PAD_CODIGO = PROPRODUTOS.ACA_CODIGO) "PAD_DESCRICAO",0 "CONS30D", (NVL((SELECT SUM(NVL(STK1.TAB_QUANTIDADE, 0)) FROM FATESTOQUE_PRODUTO STK1 WHERE STK1.LJA_CODIGO = PRODUTO.LJA_CODIGO AND STK1.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND STK1.LJA_CODIGO_EST = '||NLOJA_ESTOQUE||' AND STK1.DEP_CODIGO = '||NDEP_ESTOQUE||'),0) + NVL((SELECT SUM(NVL(STK2.TAB_QUANTIDADE, 0)) FROM FATESTOQUE_PRODUTO STK2 WHERE STK2.LJA_CODIGO = PRODUTO.LJA_CODIGO AND STK2.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND STK2.LJA_CODIGO_EST = '||NLOJA_INSP||' AND STK2.DEP_CODIGO = '||NDEP_INSP||'),0) - NVL((SELECT SUM(NVL(TABELA_MOV_MATERIAIS.MOM_QUANTIDADE, 0)) FROM TABELA_MOV_MATERIAIS JOIN CAPA_MOV_MATERIAIS ON ( CAPA_MOV_MATERIAIS.LJA_CODIGO = TABELA_MOV_MATERIAIS.LJA_CODIGO AND CAPA_MOV_MATERIAIS.CMM_NUMERO = TABELA_MOV_MATERIAIS.CMM_NUMERO) WHERE TABELA_MOV_MATERIAIS.LJA_CODIGO_PRO = PRODUTO.LJA_CODIGO AND TABELA_MOV_MATERIAIS.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND CAPA_MOV_MATERIAIS.CMM_TIPO = '||chr(39)||'RM'||chr(39)||' AND CAPA_MOV_MATERIAIS.CMM_BAIXA IS NULL ),0)) "EST_INSP_EMP", 0 "PED_NO_FORNECEDOR", (NVL((SELECT SUM(NVL(STK1.TAB_QUANTIDADE,0)) FROM FATESTOQUE_PRODUTO STK1 WHERE STK1.LJA_CODIGO = PRODUTO.LJA_CODIGO AND STK1.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND STK1.LJA_CODIGO_EST = '||NLOJA_ESTOQUE||' AND STK1.DEP_CODIGO = '||NDEP_ESTOQUE||'),0) + NVL((SELECT SUM(NVL(STK2.TAB_QUANTIDADE, 0)) FROM FATESTOQUE_PRODUTO STK2 WHERE STK2.LJA_CODIGO = PRODUTO.LJA_CODIGO AND STK2.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND STK2.LJA_CODIGO_EST = '||NLOJA_INSP||' AND STK2.DEP_CODIGO = '||NDEP_INSP||'),0) - NVL(( SELECT SUM(NVL(TABELA_MOV_MATERIAIS.MOM_QUANTIDADE,0)) FROM TABELA_MOV_MATERIAIS JOIN CAPA_MOV_MATERIAIS ON ( CAPA_MOV_MATERIAIS.LJA_CODIGO = TABELA_MOV_MATERIAIS.LJA_CODIGO AND CAPA_MOV_MATERIAIS.CMM_NUMERO = TABELA_MOV_MATERIAIS.CMM_NUMERO) WHERE TABELA_MOV_MATERIAIS.LJA_CODIGO_PRO = PRODUTO.LJA_CODIGO AND TABELA_MOV_MATERIAIS.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND CAPA_MOV_MATERIAIS.CMM_TIPO = '||chr(39)||'RM'||chr(39)||' ),0) + NVL((SELECT SUM(NVL(TABELA_ORDEM_COMPRA.TOC_QUANTIDADE,0)) FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( CAPA_ORDEM_COMPRA.LJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO AND CAPA_ORDEM_COMPRA.COC_NUMERO = TABELA_ORDEM_COMPRA.COC_NUMERO) WHERE TABELA_ORDEM_COMPRA.LJA_CODIGO_RED = PRODUTO.LJA_CODIGO AND TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND CAPA_ORDEM_COMPRA.COC_STATUS IN ('||chr(39)||'A'||chr(39)||','||chr(39)||'P'||chr(39)||')),0) - NVL((SELECT SUM(NVL(FATTABPEDIDO.TPE_QUANTIDADE * PRODETFICHATEC.DFT_QUANTIDADE,0)) FROM PRODETFICHATEC JOIN PROCAPAFICHATEC ON ( PROCAPAFICHATEC.CFT_CODIGO = PRODETFICHATEC.CFT_CODIGO) JOIN FATTABPEDIDO ON ( FATTABPEDIDO.LJA_CODIGO_RED = PROCAPAFICHATEC.LJA_CODIGO_PRO AND FATTABPEDIDO.RED_PRODUTO_KEY = PROCAPAFICHATEC.RED_PRODUTO_KEY) JOIN FATCPPEDIDO ON ( FATCPPEDIDO.LJA_CODIGO = FATTABPEDIDO.LJA_CODIGO AND FATCPPEDIDO.CPE_CODIGO = FATTABPEDIDO.CPE_CODIGO) WHERE FATTABPEDIDO.LJA_CODIGO_RED = PRODUTO.LJA_CODIGO AND FATTABPEDIDO.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND FATCPPEDIDO.CPE_STATUS IN ('||chr(39)||'A'||chr(39)||', '||chr(39)||'P'||chr(39)||')),0) ) "PEDIR_PARA_CARTEIRA", 0.00 "PEDIR_PROG", 0.00 "EXCESSO_FORNECEDOR", PROPRODUTOS.PRO_DIAS_REPOSICAO "DR", PROPRODUTOS.PRO_LOTE_REPOSICAO, PROPRODUTOS.PRO_PTO_REPOSICAO, 0.00 "PEDIR", NVL((SELECT max(TABELA_ORDEM_COMPRA.TOC_PRECO) FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( TABELA_ORDEM_COMPRA.LJA_CODIGO = CAPA_ORDEM_COMPRA.LJA_CODIGO AND TABELA_ORDEM_COMPRA.COC_NUMERO = CAPA_ORDEM_COMPRA.COC_NUMERO AND CAPA_ORDEM_COMPRA.COC_STATUS = '||chr(39)||'A'||chr(39)||') WHERE PRODUTO.LJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO_RED AND PRODUTO.RED_PRODUTO_KEY = TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY), PROPRODUTOS.PRO_VALOR_ULT_CUSTO) "TOC_PRECO", 0.00 "LOTE", 0.00 "VLR_LOTE", 0.00 "COLUNAD", 0.00 "VR_EXC", (NVL((SELECT SUM(NVL(FATTABPEDIDO.TPE_QUANTIDADE * PRODETFICHATEC.DFT_QUANTIDADE,0)) FROM PRODETFICHATEC JOIN PROCAPAFICHATEC ON ( PROCAPAFICHATEC.CFT_CODIGO = PRODETFICHATEC.CFT_CODIGO) JOIN FATTABPEDIDO ON ( FATTABPEDIDO.LJA_CODIGO_RED = PROCAPAFICHATEC.LJA_CODIGO_PRO AND FATTABPEDIDO.RED_PRODUTO_KEY = PROCAPAFICHATEC.RED_PRODUTO_KEY) JOIN FATCPPEDIDO ON ( FATCPPEDIDO.LJA_CODIGO = FATTABPEDIDO.LJA_CODIGO AND FATCPPEDIDO.CPE_CODIGO = FATTABPEDIDO.CPE_CODIGO) WHERE FATTABPEDIDO.LJA_CODIGO_RED = PRODUTO.LJA_CODIGO AND FATTABPEDIDO.RED_PRODUTO_KEY = PRODUTO.RED_PRODUTO_KEY AND FATCPPEDIDO.CPE_STATUS IN ('||chr(39)||'A'||chr(39)||', '||chr(39)||'P'||chr(39)||')),0) ) "NEC_CARTEIRA", 0.00 "NEC_PROGRAMA", 0.00 "REC_CARTEIRA", 0.00 "REC_PROGRAMA", (SELECT MAX(CAPA_ORDEM_COMPRA.COC_NUMERO) FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( TABELA_ORDEM_COMPRA.LJA_CODIGO = CAPA_ORDEM_COMPRA.LJA_CODIGO AND TABELA_ORDEM_COMPRA.COC_NUMERO = CAPA_ORDEM_COMPRA.COC_NUMERO AND CAPA_ORDEM_COMPRA.COC_STATUS = '||chr(39)||'A'||chr(39)||') WHERE PRODUTO.LJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO_RED AND PRODUTO.RED_PRODUTO_KEY = TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY) "NUMERO_OC", '||chr(39)||'SEM_DE_FATO'||chr(39)||' "SEM_DE_FATO", '||chr(39)||'SEM_DE_FATO2'||chr(39)||' "SEM_DE_FATO2", '||chr(39)||'PRAZO'||chr(39)||' "PRAZO", PROPRODUTOS.pro_estminimo FROM PROREDUZIDOPRODUTO "PRODUTO" JOIN PROPRODUTOS ON ( PROPRODUTOS.LJA_CODIGO = PRODUTO.LJA_CODIGO AND PROPRODUTOS.PRO_CODIGO = PRODUTO.PRO_CODIGO) WHERE PRODUTO.PAD_CODIGO IS NULL AND PRODUTO.GRD_CODIGO IS NULL '||NPARAMETROS_SELECT; OPEN c FOR v_query_str; LOOP FETCH c INTO nPRO_CODIGO,nLJA_CODIGO,nRED_PRODUTO_KEY,nCLF_CODIGO,nCLF_RAZNOM,nPRO_MASKCOD,nPRO_DESCRICAO,nPRO_UNIDADE,nACA_CODIGO,nPAD_DESCRICAO,nCONS30D,nEST_INSP_EMP,nPED_NO_FORNECEDOR,nPEDIR_PARA_CARTEIRA,nPEDIR_PROG,nEXCESSO_FORNECEDOR,nDR,nPRO_LOTE_REPOSICAO,nPRO_PTO_REPOSICAO,nPEDIR,nTOC_PRECO,nLOTE,nVLR_LOTE,nCOLUNAD,nVR_EXC,nNEC_CARTEIRA,nNEC_PROGRAMA,nREC_CARTEIRA,nREC_PROGRAMA,nNUMERO_OC,nSEM_DE_FATO,nSEM_DE_FATO2,nPRAZO,nPRO_ESTMINIMO; EXIT WHEN c%NOTFOUND; SELECT min(FIACLIFORN.CLF_RAZNOM) into nCLF_RAZNOM FROM FIACLIFORN WHERE FIACLIFORN.LJA_CODIGO = NLOJA_ESTOQUE AND FIACLIFORN.CLF_CODIGO = (SELECT MAX(CAPA_ORDEM_COMPRA.CLF_CODIGO) FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( TABELA_ORDEM_COMPRA.LJA_CODIGO = CAPA_ORDEM_COMPRA.LJA_CODIGO AND TABELA_ORDEM_COMPRA.COC_NUMERO = CAPA_ORDEM_COMPRA.COC_NUMERO AND CAPA_ORDEM_COMPRA.COC_STATUS = 'A') WHERE nLJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO_RED AND nRED_PRODUTO_KEY = TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY); SELECT SUM(NVL(TABELA_ORDEM_COMPRA.TOC_QUANTIDADE, 0)) into nPED_NO_FORNECEDOR FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( CAPA_ORDEM_COMPRA.LJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO AND CAPA_ORDEM_COMPRA.COC_NUMERO = TABELA_ORDEM_COMPRA.COC_NUMERO) WHERE TABELA_ORDEM_COMPRA.LJA_CODIGO_RED = nLJA_CODIGO AND TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY = nRED_PRODUTO_KEY AND CAPA_ORDEM_COMPRA.COC_STATUS IN ('A','P') AND CAPA_ORDEM_COMPRA.clf_codigo = (SELECT MAX(CAPA.CLF_CODIGO) FROM TABELA_ORDEM_COMPRA ITEM JOIN CAPA_ORDEM_COMPRA CAPA ON ( ITEM.LJA_CODIGO = CAPA.LJA_CODIGO AND ITEM.COC_NUMERO = CAPA.COC_NUMERO AND CAPA.COC_STATUS = 'A') WHERE nLJA_CODIGO = ITEM.LJA_CODIGO_RED AND nRED_PRODUTO_KEY = ITEM.RED_PRODUTO_KEY); SELECT min(FATCONDPAGTO.CON_DESCRICAO) into nPRAZO FROM FATCONDPAGTO WHERE FATCONDPAGTO.CON_PGTO = (SELECT min(CAPA_ORDEM_COMPRA.CON_PGTO) FROM CAPA_ORDEM_COMPRA WHERE CAPA_ORDEM_COMPRA.COC_NUMERO = (SELECT MAX(CAPA_ORDEM_COMPRA.COC_NUMERO) FROM TABELA_ORDEM_COMPRA JOIN CAPA_ORDEM_COMPRA ON ( TABELA_ORDEM_COMPRA.LJA_CODIGO = CAPA_ORDEM_COMPRA.LJA_CODIGO AND TABELA_ORDEM_COMPRA.COC_NUMERO = CAPA_ORDEM_COMPRA.COC_NUMERO AND CAPA_ORDEM_COMPRA.COC_STATUS = 'A') WHERE nLJA_CODIGO = TABELA_ORDEM_COMPRA.LJA_CODIGO_RED AND nRED_PRODUTO_KEY = TABELA_ORDEM_COMPRA.RED_PRODUTO_KEY)); nSOMACONS30D := 0; DECLARE CURSOR CUR_02 IS /*Calculo ficha técnica do campo CONS30D*/ /*Encontra 1º nivel de todas as fichas tecnica da materia prima*/ SELECT PROCAPAFICHATEC.RED_PRODUTO_KEY, SUM(FATDETALHETRANSFERENCIA.TFD_QUANT) AS "nQtdeTransferencia" FROM FATDETALHETRANSFERENCIA JOIN FATCPTRANSFERENCIA ON ( FATCPTRANSFERENCIA.TRF_CODIGO = FATDETALHETRANSFERENCIA.TRF_CODIGO) JOIN PROCAPAFICHATEC ON ( PROCAPAFICHATEC.LJA_CODIGO_PRO = FATDETALHETRANSFERENCIA.LJA_CODIGO AND PROCAPAFICHATEC.RED_PRODUTO_KEY = FATDETALHETRANSFERENCIA.RED_PRODUTO_KEY) JOIN PRODETFICHATEC ON ( PRODETFICHATEC.CFT_CODIGO = PROCAPAFICHATEC.CFT_CODIGO) JOIN PROREDUZIDOPRODUTO ON ( PROREDUZIDOPRODUTO.LJA_CODIGO = PRODETFICHATEC.LJA_CODIGO_MAT AND PROREDUZIDOPRODUTO.RED_PRODUTO_KEY = PRODETFICHATEC.RED_PRODUTO_MAT) LEFT JOIN PROPRODUTOS ON ( PROPRODUTOS.LJA_CODIGO = PROREDUZIDOPRODUTO.LJA_CODIGO AND PROPRODUTOS.PRO_CODIGO = PROREDUZIDOPRODUTO.PRO_CODIGO ) WHERE PROREDUZIDOPRODUTO.LJA_CODIGO = nLJA_CODIGO AND PROREDUZIDOPRODUTO.RED_PRODUTO_KEY = nRED_PRODUTO_KEY AND FATCPTRANSFERENCIA.TPT_CODIGO = 197 GROUP BY PROCAPAFICHATEC.RED_PRODUTO_KEY; BEGIN OPEN CUR_02; LOOP FETCH CUR_02 INTO nRED_PROD_KEY_FICHATEC, nQtdeTransferencia; EXIT WHEN CUR_02%NOTFOUND; select CALCULO_CASCATAFICHATEC(nlja_codigo, nRED_PROD_KEY_FICHATEC, nRED_PRODUTO_KEY, nQtdeTransferencia) into nCONS30D from dual; nSOMACONS30D := nSOMACONS30D + NVL(nCONS30D,0); END LOOP; CLOSE CUR_02; END; nSOMANEC_CARTEIRA := 0; DECLARE CURSOR CUR_02 IS /*Calculo ficha técnica do campo NEC_CARTEIRA*/ /*Encontra 1º nivel de todas as fichas tecnica da materia prima*/ SELECT PROCAPAFICHATEC.red_produto_key, sum(FATTABPEDIDO.TPE_QUANTIDADE) as "QndeCascata" FROM FATTABPEDIDO JOIN FATCPPEDIDO ON ( FATCPPEDIDO.LJA_CODIGO = FATTABPEDIDO.LJA_CODIGO AND FATCPPEDIDO.CPE_CODIGO = FATTABPEDIDO.CPE_CODIGO) JOIN PROCAPAFICHATEC ON ( PROCAPAFICHATEC.LJA_CODIGO_PRO = FATTABPEDIDO.LJA_CODIGO AND PROCAPAFICHATEC.RED_PRODUTO_KEY = FATTABPEDIDO.RED_PRODUTO_KEY) JOIN PRODETFICHATEC ON ( PRODETFICHATEC.CFT_CODIGO = PROCAPAFICHATEC.CFT_CODIGO) JOIN PROREDUZIDOPRODUTO ON ( PROREDUZIDOPRODUTO.LJA_CODIGO = PRODETFICHATEC.LJA_CODIGO_MAT AND PROREDUZIDOPRODUTO.RED_PRODUTO_KEY = PRODETFICHATEC.RED_PRODUTO_MAT) LEFT JOIN PROPRODUTOS ON ( PROPRODUTOS.LJA_CODIGO = PROREDUZIDOPRODUTO.LJA_CODIGO AND PROPRODUTOS.PRO_CODIGO = PROREDUZIDOPRODUTO.PRO_CODIGO ) WHERE PROREDUZIDOPRODUTO.LJA_CODIGO = nLJA_CODIGO AND PROREDUZIDOPRODUTO.RED_PRODUTO_KEY = nRED_PRODUTO_KEY AND FATCPPEDIDO.CPE_STATUS IN ('A','P') GROUP BY PROCAPAFICHATEC.red_produto_key; BEGIN OPEN CUR_02; LOOP FETCH CUR_02 INTO nRED_PROD_KEY_FICHATEC, nQtdeTransferencia; EXIT WHEN CUR_02%NOTFOUND; select CALCULO_CASCATAFICHATEC(nlja_codigo, nRED_PROD_KEY_FICHATEC, nRED_PRODUTO_KEY, nQtdeTransferencia) into nNEC_CARTEIRA from dual; nSOMANEC_CARTEIRA := nSOMANEC_CARTEIRA + NVL(nNEC_CARTEIRA,0); END LOOP; CLOSE CUR_02; END; /*Valor do estoque da matéria prima*/ select SUM((select sum(EstoqueAPA.tab_quantidade) from fatestoque_produto EstoqueAPA where EstoqueAPA.lja_codigo = fatestoque_produto.lja_codigo and EstoqueAPA.red_produto_key = fatestoque_produto.red_produto_key and EstoqueAPA.lja_codigo_est = 1 and EstoqueAPA.dep_codigo = 1 ) + (select sum(EstoqueAPA.tab_quantidade) from fatestoque_produto EstoqueAPA inner join prodeposito on ( prodeposito.lja_codigo = EstoqueAPA.lja_codigo_est and prodeposito.dep_codigo = EstoqueAPA.dep_codigo ) where EstoqueAPA.lja_codigo = fatestoque_produto.lja_codigo and EstoqueAPA.red_produto_key = fatestoque_produto.red_produto_key and prodeposito.lja_codigo = 1 and prodeposito.dep_tipo = 'P' )) INTO nVALOR_ESTOQUE from fatestoque_produto where fatestoque_produto.lja_codigo = nLJA_CODIGO and fatestoque_produto.red_produto_key = nRED_PRODUTO_KEY; /*Quantidade Pedido*/ SELECT SUM(FATTABPEDIDO.TPE_QUANTIDADE) INTO nNQTDE_PEDIDO FROM FATTABPEDIDO INNER JOIN FATCPPEDIDO ON( FATCPPEDIDO.CPE_CODIGO = FATTABPEDIDO.CPE_CODIGO AND FATCPPEDIDO.LJA_CODIGO = FATTABPEDIDO.LJA_CODIGO) WHERE FATTABPEDIDO.LJA_CODIGO = nLJA_CODIGO AND FATTABPEDIDO.RED_PRODUTO_KEY = nRED_PRODUTO_KEY AND FATCPPEDIDO.CPE_STATUS IN ('A','P'); /*CNE_PROGRAMA*/ nNEC_PROGRAMA := (NVALOR_VARIAVEL_PRO_DIARIA * nCONS30D - NVL(nVALOR_ESTOQUE,0) + NVL(nNQTDE_PEDIDO,0)); IF nNEC_PROGRAMA < 0 THEN nNEC_PROGRAMA := 0; END IF; /*Receber Carteira*/ nREC_CARTEIRA := (nNEC_CARTEIRA - nEst_Insp_Emp); IF nREC_CARTEIRA < 0 THEN nREC_CARTEIRA := 0; END IF; /*Receber Programa*/ nREC_PROGRAMA := (nNEC_PROGRAMA - nEst_Insp_Emp); IF nREC_PROGRAMA 0 THEN nPedir_para_carteira := 0; END IF; /*Pedir para Programa*/ nPedir_Prog := (nEst_Insp_Emp + nPed_No_Fornecedor) - nNEC_PROGRAMA; IF nPedir_Prog > 0 THEN nPedir_Prog := 0; END IF; /*Pedir*/ IF nPedir_Prog < 0 THEN nPedir := nPedir_Prog * -1; ELSE nPedir := 0; END IF; /*Excesso Fornecedor*/ nEXCESSO_FORNECEDOR := (nPed_No_Fornecedor - nREC_PROGRAMA); IF nEXCESSO_FORNECEDOR < 0 THEN nEXCESSO_FORNECEDOR := 0; END IF; /*Dias em Excesso*/ IF nCONS30D = 0 THEN nColunaD := 0; ELSE nColunaD := nEXCESSO_FORNECEDOR / (nCONS30D / 30); IF nCOLUNAD < 0 THEN nCOLUNAD := 0; END IF; END IF; /*Valor Excesso*/ nVR_EXC := (nEXCESSO_FORNECEDOR * nTOC_PRECO); nSEM_DE_FATO := ''; nSEM_DE_FATO2 := ''; INSERT INTO TEMP_COMPRAS VALUES (nPRO_CODIGO,nLJA_CODIGO,nRED_PRODUTO_KEY,nCLF_CODIGO,nCLF_RAZNOM,nPRO_MASKCOD,nPRO_DESCRICAO,nPRO_UNIDADE,nACA_CODIGO,nPAD_DESCRICAO,nSOMACONS30D,nEST_INSP_EMP,nPED_NO_FORNECEDOR,nPEDIR_PARA_CARTEIRA,nPEDIR_PROG,nEXCESSO_FORNECEDOR,nDR,nPRO_LOTE_REPOSICAO,nPRO_PTO_REPOSICAO,nPEDIR,nTOC_PRECO,nLOTE,nVLR_LOTE,nCOLUNAD,nVR_EXC,nSOMANEC_CARTEIRA,nNEC_PROGRAMA,nREC_CARTEIRA,nREC_PROGRAMA,nNUMERO_OC,nSEM_DE_FATO,nSEM_DE_FATO2,nPRAZO,nPRO_ESTMINIMO); END LOOP;
END;
/
-
AutorPosts
- Você deve fazer login para responder a este tópico.