Ir para conteúdo
carlossorocaba82

"Collection" de Bind´s variable

Recommended Posts

Boa tarde.

  Alguém sabe uma maneira de passar uma "lista/collection" de bind variable ao trabalhar com sql dinâmico utilizando cursor?
  
  Exemplificando meu problema, tenho a procedure abaixo, onde há comentários para exemplificar e questionar melhor o problema

create or replace procedure pr_teste(
  pAtivo  number := 1,
  pCampo2 number,
  pCampo3 varchar2,
  pCampo4 varchar2,
  pCursor in out SYS_REFCURSOR,
) is
  vQuery varchar2(1000);
  vWhere varchar2(1000) := '';
begin

  vQuery := 'select * from clientes where ativo = :ativo ';

  if pCampo2 > 0 then
    vWhere := vWhere || ' and campo2 = :campo2 ';
  end if;

  if pCampo3 is not null then
    vWhere := vWhere || ' and campo3 = :campo3 ';
  end if;

  if pCampo4 is not null then
    vWhere := vWhere || ' and campo4 = :campo4 ';
  end if;
  
  -- Se nenhum parâmetro for informado, com exceção do primeiro, que é obrigatório, eu tenho o seguinte comando para me retornar o cursor:
  if pCampo2 = 0 and  pCampo3 is null and pCampo4 is null then
    open pCursor for vQuery || vWhere
      using pAtivo;
  -- Se APENAS o campo2 for informado, o comando para retornar o cursor precisa de 2 "itens" no "using":
  elsif pCampo2 > 0 and  pCampo3 is null and pCampo4 is null then
    open pCursor for vQuery || vWhere
      using pAtivo, pCampo2;
  -- Se o campo2 + campo3 forem informados, o comando para retornar o cursor precisa de 3 "itens" no "using":
  elsif pCampo2 > 0 and  pCampo3 is not null and pCampo4 is null then
    open pCursor for vQuery || vWhere
      using pAtivo, pCampo2, pCampo3;
  -- Se o campo2 + campo3 + campo 4 forem informados, o comando para retornar o cursor precisa de 4 "itens" no "using":
  elsif pCampo2 > 0 and  pCampo3 is not null and pCampo4 not is null then
    open pCursor for vQuery || vWhere
      using pAtivo, pCampo2, pCampo3 , pCampo4;
  -- continuando os IF´s, seria necessário combinar as outras possibilidades ainda, como, "pcampo2 = 0 and pcampo3 is not null and pcampo 4 is null" OU
  -- "pcampo2 = 0 and pcampo3 is not null and pcampo 4 is not null" OU "pcampo2 = 0 and pcampo3 is null and pcampo 4 is not null"
  end if;
      
  -- ... agora, o meu caso real, eu tenho OITO parâmetros opcionais que podem ser combinados. é inviável trabalhar com tantas condições.
  -- ... Gostaria de alguma opção que eu pudesse ir adicionado os possíveis "binds" já em uma collection e depois, ao abrir o cursor, usar esta collection na clausula using.
  -- ... algo tipo:

  if pCampo2 > 0 then
    vWhere := vWhere || ' and campo2 = :campo2 ';
    <<collectionComOsParametrosQuePossuemValores>> := pCampo2;
  end if;

  if pCampo3 is not null then
    vWhere := vWhere || ' and campo3 = :campo3 ';
    <<collectionComOsParametrosQuePossuemValores>> := pCampo3;
  end if;

  if pCampo4 is not null then
    vWhere := vWhere || ' and campo4 = :campo4 ';
    <<collectionComOsParametrosQuePossuemValores>> := pCampo4;
  end if;

  open  pCursor for vQuery || vWhere
      using <<collectionComOsParametrosQuePossuemValores>>

end;
/

  Pesquisei muito a respeito e não encontrei nada.
  
  Agradeço a ajuda.
  
abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

sem responder diretamente a sua pergunta em relação à collections, a linha que você está iniciando é boa.

Pelo meno eu uso dessa forma quando necessário.

 

seguindo essa linha não resolveria, apesar de você ter 8 parâmetros?

 

create or replace procedure pr_teste(
  pAtivo  number,
  pCampo2 number,
  pCampo3 varchar2,
  pCampo4 varchar2,
  pCursor in out SYS_REFCURSOR
) is
--
  vQuery varchar2(1000);
  vWhere varchar2(1000) := '';
begin
  --
  vQuery := 'select * from clientes where ativo = '||to_char(nvl(pativo,1));
  --
  if nvl(pCampo2,0) > 0 then
    vWhere := vWhere || ' and campo2 = '||to_Char(pcampo2);
  end if;
  if pCampo3 is not null then
    vWhere := vWhere || ' and campo3 = '||''''||pcampo3||'''';
  end if;
  if pCampo4 is not null then
    vWhere := vWhere || ' and campo4 = '||''''||pcampo4||'''';
  end if;
  --
  if vWhere is not null then
     vQuery := vQuery||vWhere;
  end if;
  --
  open pCursor for vQuery;
   loop
    fetch pCursor into ...
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por pdrnl
      Bom dia pessoal, estou tendo um problema numa pagina de uma aplicação apex aqui, se trata de uma dynamic action que fica estourando o seguinte erro na tela: AJAX call returned server error ORA-01403: dados não encontrados for Execute PL/SQL Code.

      O Código PL/SQL da dynamic action é o seguinte: 
       
      Declare RESPONSABILIDADE$ Number; LICENCIAMENTO$ Number; NOTA_FISCAL_ENTREGUE$ Number; DOCUMENTACAO$ Number; LOCAL$ Number; REVISAO_ENTREGUE$ Number; LAVAGEM$ Number; BENEFICIADOR$ Varchar2(100); DATA_LIBERADO$ Date; DATA_ENTREGUE$ Date; PAGAMENTO$ Number; VALOR$ Number; BANCO$ Number; VALOR_BANCO$ Number; DATA_PROTOCOLO_BNDS$ Date; Begin Select RESPONSABILIDADE, 1,--Decode(Licenciamento,'C',1,'T',Null),--LICENCIAMENTO, NOTA_FISCAL_ENTREGUE, DOCUMENTACAO, LOCAL, REVISAO_ENTREGUE, LAVAGEM, BENEFICIADOR, DATA_LIBERADO, DATA_ENTREGUE, PAGAMENTO, VALOR, BANCO, VALOR_BANCO, DATA_PROTOCOLO_BNDS--DATA_PROT_BNDES Into RESPONSABILIDADE$, LICENCIAMENTO$, NOTA_FISCAL_ENTREGUE$, DOCUMENTACAO$, LOCAL$ , REVISAO_ENTREGUE$, LAVAGEM$, BENEFICIADOR$, DATA_LIBERADO$, DATA_ENTREGUE$, PAGAMENTO$, VALOR$, BANCO$, VALOR_BANCO$, DATA_PROTOCOLO_BNDS$ From ifv_pedidos_status_veiculos Where Ifv_Empresa = :P0_Current_Emp And Ifv_Local = :P0_Current_Loc And Ifv_pedido = :P976_Ifv_PEdido And Ifv_Sequencia_Detalhe = :P976_Ifv_Seq_Detalhe And Ifv_Sequencia_Veiculo = :P976_Ifv_Seq_Veiculo; :P976_RESPONSABILIDADE := RESPONSABILIDADE$; :P976_LICENCIAMENTO := LICENCIAMENTO$ ; :P976_NOTA_FISCAL_ENTREGUE := NOTA_FISCAL_ENTREGUE$ ; :P976_DOCUMENTACAO := DOCUMENTACAO$; :P976_LOCAL := Local$; :P976_REVISAO_ENTREGUE := REVISAO_ENTREGUE$; :P976_LAVAGEM := LAVAGEM$; :P976_BENEFICIADOR := BENEFICIADOR$; :P976_DATA_LIBERADO := DATA_LIBERADO$; :P976_DATA_ENTREGUE :=DATA_ENTREGUE$; :P976_PAGAMENTO := PAGAMENTO$; :P976_VALOR := VALOR$; :P976_BANCO := BANCO$; :P976_VALOR_BANCO := VALOR_BANCO$; :P976_DATA_PROT_BNDES := DATA_PROTOCOLO_BNDS$; End;
      Os itens de SUBMIT sao esses: P976_RESPONSABILIDADE,P976_LICENCIAMENTO,P976_NOTA_FISCAL_ENTREGUE,P976_DOCUMENTACAO,P976_LOCAL,P976_REVISAO_ENTREGUE,P976_LAVAGEM,P976_BENEFICIADOR,P976_DATA_LIBERADO,P976_DATA_ENTREGUE,P976_PAGAMENTO,P976_VALOR,P976_BANCO,P976_VALOR_BANCO,P976_DATA_PROT_BNDES

      Os itens de RETURN sao esses: P976_RESPONSABILIDADE,P976_LICENCIAMENTO,P976_NOTA_FISCAL_ENTREGUE,P976_DOCUMENTACAO,P976_LOCAL,P976_REVISAO_ENTREGUE,P976_LAVAGEM,P976_BENEFICIADOR,P976_DATA_LIBERADO,P976_DATA_ENTREGUE,P976_PAGAMENTO,P976_VALOR,P976_BANCO,P976_VALOR_BANCO,P976_DATA_PROT_BNDES

      Como consigo resolver esse erro?
    • Por nicolasbessa
      Galera,
      Uma ajuda, Por gentileza!
       
      Tenho a query abaixo para ser trabalhada a performance. A mesma é uma view, realiza consulta diversas vezes na mesma tabela para montar alguns campos.
      Gostaria de ideias para melhorar a mesma, desde já agradeço!
       

        CREATE OR REPLACE FORCE EDITIONABLE VIEW "LF"."VW_CTM_JNJ_ENTSAI_TABLEAU" ("TIPO_NF", "COD_HOLDING", "COD_MATRIZ", "COD_FILIAL", "ID_NF", "NUM_NF", "SERIE", "COD_MODELO", "COD_CFOP_LEGAL", "COD_CLIFOR", "DT_EMISSAO", "DT_LANCAMENTO", "DT_ENTRADA", "COD_STATUS", "COD_UF", "MUNICIPIO", "RAZAOSOCIAL", "CGC_CPF", "VLR_TOTAL_PRODUTOS", "TOTAL_ITEM", "ICMS_BASE_TOTAL", "ICMS_VALOR_TOTAL", "ICMS_ST_BASE_TOTAL", "ICMS_ST_VALOR_TOTAL", "VLR_FRETE", "VLR_SEGURO", "VLR_DESPESAS", "IPI_TRIBUTADO", "IPI_NAO_TRIBUTADO", "DOCNUM", "ID_ITEM", "COD_PRODUTO", "COD_UNID_MEDIDA", "COD_CLASSIF_FISCAL", "QUANTIDADE", "VLR_UNITARIO", "VLR_DESCONTO", "DESCRICAO_NOTA", "DIG_CFOP", "COD_GRP_PRODUTO", "COD_IVA", "COD_ORIGEM_PROD", "CTA_CTB_MATERIAL", "LANCTO_CONTABIL", "CHAVE_NF_E", "NUMERO_DI", "COD_TRIBUT_ICMS", "COD_SIT_TRIB_IPI", "COD_IMPOSTO", "BASE_CALCULO_1", "BASE_CALCULO_2", "BASE_CALCULO_3", "VLR_IMPOSTO_ICMS_1", "VLR_IMPOSTO_ICMS_2", "ALIQUOTA_ICMS_1", "ALIQUOTA_ICMS_2", "COD_TRIBUT_IPI", "BASE_CALCULO_IPI_1", "BASE_CALCULO_IPI_2", "BASE_CALCULO_IPI_3", "ALIQUOTA_IPI", "VLR_IMPOSTO_IPI", "BASE_CALCULO_ST_1", "BASE_CALCULO_ST_2", "BASE_CALCULO_ST_3", "ALIQUOTA_ST", "VLR_IMPOSTO_ST", "BASE_CALCULO_DIFAL", "ALIQUOTA_DIFAL", "VLR_IMPOSTO_DIFAL", "BASE_CALCULO_J6", "VLR_IMPOSTO_J6", "BASE_CALCULO_J7", "VLR_IMPOSTO_J7", "BASE_CALCULO_J8", "VLR_IMPOSTO_J8", "BASE_CALCULO_PIS_1", "BASE_CALCULO_PIS_2", "BASE_CALCULO_PIS_3", "ALIQUOTA_PIS", "VLR_IMPOSTO_PIS", "COD_SIT_TRIB_PIS", "BASE_CALCULO_COFINS_1", "BASE_CALCULO_COFINS_2", "BASE_CALCULO_COFINS_3", "ALIQUOTA_COFINS", "VLR_IMPOSTO_COFINS", "COD_SIT_TRIB_COF") AS 
        select distinct
                    'E'                  TIPO_NF,
                     a.COD_HOLDING,
                     a.COD_MATRIZ,
                     a.COD_FILIAL,
                     a.ID_NF_ENTRADA     ID_NF,
                     A.NUM_NF,
                     A.SERIE,
                     A.COD_MODELO,
                     a.COD_CFOP_LEGAL,
                     a.COD_CLIFOR,
                     A.DT_EMISSAO,
                     a.DT_LANCAMENTO,
                     a.DT_ENTRADA,
                     a.COD_STATUS,
                     a.COD_UF,
                     A.MUNICIPIO,
                     A.RAZAOSOCIAL,
                     A.CGC_CPF,
                     A.VLR_TOTAL_PRODUTOS,
                     B.VLR_BRUTO           TOTAL_ITEM,
                     A.ICMS_BASE_TOTAL,
                     A.ICMS_VALOR_TOTAL,
                     A.ICMS_ST_BASE_TOTAL,
                     A.ICMS_ST_VL_TOTAL    ICMS_ST_VALOR_TOTAL,
                     A.VLR_FRETE,
                     A.VLR_SEGURO,
                     A.VLR_DESPESAS,
                     A.IPI_TRIBUTADO,
                     a.IPI_NAO_TRIBUTADO,
                     a.DOCNUM,
                     b.id_item,
                     b.COD_PRODUTO,
                     b.COD_UNID_MEDIDA,
                     b.COD_CLASSIF_FISCAL,
                     b.QUANTIDADE,
                     b.VLR_UNITARIO,
                     b.VLR_DESCONTO,
                     b.DESCRICAO_NOTA,
                     b.dig_cfop,
                     b.cod_grp_produto, 
                     b.cod_iva,
                     C.COD_ORIGEM_PROD,
                     B.CTA_CTB_MATERIAL,
                     A.LANCTO_CONTABIL,
                     A.CHAVE_NF_E,
                     A.NUMERO_DI,
                     c.COD_TRIBUT_ICMS,
                     c.COD_SIT_TRIB_IPI,  
                     -- DADOS DO IMPOSTO 01
                     c.COD_IMPOSTO,
                    (SELECT NVL(base_calculo,0)
                     FROM   LF_NF_entrada_IMPOSTO
                     WHERE  cod_holding   = b.cod_holding
                     and    cod_matriz    = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    id_nf_entrada   = b.id_nf_entrada
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '01'
                     and    cod_tp_lanc_imp = '1'             
                     AND    ROWNUM          = 1)  base_calculo_1,
                     --
                    (SELECT NVL(base_calculo,0)
                     FROM   LF_NF_entrada_IMPOSTO
                     WHERE  cod_holding   = b.cod_holding
                     and    cod_matriz    = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    id_nf_entrada   = b.id_nf_entrada
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '01'
                     and    cod_tp_lanc_imp = '2'             
                     AND    ROWNUM          = 1)  base_calculo_2,
                     --
                    (SELECT NVL(base_calculo,0)
                     FROM   LF_NF_entrada_IMPOSTO
                     WHERE  cod_holding   = b.cod_holding
                     and    cod_matriz    = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    id_nf_entrada   = b.id_nf_entrada
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '01'
                     and    cod_tp_lanc_imp = '3'             
                     AND    ROWNUM          = 1)  base_calculo_3,
                     --   
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '01'
                   and    cod_tp_lanc_imp = '1'
                   AND    ROWNUM        = 1)  vlr_imposto_icms_1,
                   --
                   (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '01'
                   and    cod_tp_lanc_imp = '2'
                   AND    ROWNUM        = 1)  vlr_imposto_icms_2,
                   --
                   -- Recupera a Aliquota do imposto IPI
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '01'
                   and    cod_tp_lanc_imp = '1'
                   AND    ROWNUM        = 1)  aliquota_ICMS_1,  
                   --
                   (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '01'
                   and    cod_tp_lanc_imp = '2'
                   AND    ROWNUM        = 1)  aliquota_ICMS_2,
                   --
                   --Recuperar o Valor do CST IPI
                  (SELECT cod_tribut_ipi
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding     = b.cod_holding
                   and    cod_matriz      = b.cod_matriz
                   and    cod_filial      = b.cod_filial
                   and    id_nf_entrada   = b.id_nf_entrada
                   AND    id_item         = b.id_item
                   AND    COD_TP_LANC_IMP = '1'
                   AND    COD_IMPOSTO     = '02'
                   AND    ROWNUM          = 1)  cod_tribut_ipi,
                   -- Recupera o Valor da Base de Calculo do imposto IPI
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '02'
                   AND    COD_TP_LANC_IMP = '1'
                   AND    ROWNUM        = 1)  base_calculo_ipi_1,
                  -- Recupera o Valor da Base de Calculo do imposto IPI
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '02'
                   AND    COD_TP_LANC_IMP = '2'
                   AND    ROWNUM        = 1)  base_calculo_ipi_2,
                  -- Recupera o Valor da Base de Calculo do imposto IPI
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '02'
                   AND    COD_TP_LANC_IMP = '3'
                   AND    ROWNUM        = 1)  base_calculo_ipi_3,             --
                   -- Recupera a Aliquota do imposto IPI
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '02'
                   AND    ROWNUM        = 1)  aliquota_ipi,
                   -- Recupera o Valor do imposto IPI
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '02'
                   AND    ROWNUM        = 1)  vlr_imposto_ipi,
                   --
                   -- Recuperar Valores do Imposto 03
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 03
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '03'
                   AND    COD_TP_LANC_IMP = '1'
                   AND    ROWNUM        = 1)  base_calculo_st_1,
                    -- Recupera o Valor da Base de Calculo do imposto 03
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '03'
                   AND    COD_TP_LANC_IMP = '2'
                   AND    ROWNUM        = 1)  base_calculo_st_2, 
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 03
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '03'
                   AND    COD_TP_LANC_IMP = '3'
                   AND    ROWNUM        = 1)  base_calculo_st_3,
                   -- Recupera o Tipo de lancamento do imposto 03 - Substituicao Tributaria
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '03'
                   AND    ROWNUM        = 1)  aliquota_st,
                   -- Recupera o Valor do imposto 03 - Substituicao Tributaria
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '03'
                   AND    ROWNUM        = 1)  vlr_imposto_st,
                   --
                   -- Recuperar valores do Imposto 04
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 04 - DIFAL
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '04'
                   AND    ROWNUM        = 1)  base_calculo_difal,
                   --
                   -- Recupera a Aliquota do imposto 04 - DIFAL
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '04'
                   AND    ROWNUM        = 1)  aliquota_difal,
                   -- Recupera o Valor do imposto 04 - DIFAL
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '04'
                   AND    ROWNUM        = 1)  vlr_imposto_difal,
                   --
                   -- Recuperar valores do Imposto J6
                   --
                   -- Recupera o Valor da Base de Calculo do imposto J6 - DIFAL
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J6'
                   AND    ROWNUM        = 1)  base_calculo_J6,
                   --
                   -- Recupera o Valor do imposto J6
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J6'
                   AND    ROWNUM        = 1)  vlr_imposto_J6,
                   --
                   -- Recuperar valores do Imposto J7
                   --
                   -- Recupera o Valor da Base de Calculo do imposto J7
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J7'
                   AND    ROWNUM        = 1)  base_calculo_J7,
                   --
                   -- Recupera o Valor do imposto J7
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J7'
                   AND    ROWNUM        = 1)  vlr_imposto_J7,
                   --
                   -- Recuperar valores do Imposto J8
                   --
                   -- Recupera o Valor da Base de Calculo do imposto J8
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J8'
                   AND    ROWNUM        = 1)  base_calculo_J8,
                   --
                   -- Recupera o Valor do imposto J8
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = 'J8'
                   AND    ROWNUM        = 1)  vlr_imposto_J8,
                   --
                   -- Recuperar Valores do Imposto 09 - PIS
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 09
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    COD_TP_LANC_IMP = '1'
                   AND    ROWNUM        = 1)  base_calculo_pis_1,
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 09
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    COD_TP_LANC_IMP = '2'
                   AND    ROWNUM        = 1)  base_calculo_pis_2,
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 09
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    COD_TP_LANC_IMP = '3'
                   AND    ROWNUM        = 1)  base_calculo_pis_3,
                   --
                   -- Recupera a Aliquota do imposto 09 - PIS
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    ROWNUM        = 1)  aliquota_pis,
                   -- Recupera o Valor do imposto 09 - PIS
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    ROWNUM        = 1)  vlr_imposto_pis,
                   -- Recupera o Codigo da situacao tributaria do imposto 09 - PIS
                  (SELECT cod_sit_trib_PIS
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '09'
                   AND    ROWNUM        = 1)  cod_sit_trib_pis,
                   --
                   -- Recuperar Valores do Imposto 10 - COFINS
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 10
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    COD_TP_LANC_IMP = '1'
                   AND    ROWNUM        = 1)  base_calculo_cofins_1,
                   -- Recupera o Valor da Base de Calculo do imposto 10
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    COD_TP_LANC_IMP = '2'
                   AND    ROWNUM        = 1)  base_calculo_cofins_2,
                   --
                   -- Recupera o Valor da Base de Calculo do imposto 10
                  (SELECT NVL(base_calculo,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    COD_TP_LANC_IMP = '3'
                   AND    ROWNUM        = 1)  base_calculo_cofins_3,
                   --
                   -- Recupera a Aliquota do imposto 10 - COFINS
                  (SELECT nvl(aliquota,0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    ROWNUM        = 1)  aliquota_cofins,
                   -- Recupera o Valor do imposto 10 - COFINS
                  (SELECT nvl(vlr_imposto, 0)
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    ROWNUM        = 1)  vlr_imposto_cofins,
                   -- Recupera o Codigo da situacao tributaria do imposto 10 - COFINS
                  (SELECT cod_sit_trib_cof
                   FROM   LF_NF_entrada_IMPOSTO
                   WHERE  cod_holding   = b.cod_holding
                   and    cod_matriz    = b.cod_matriz
                   and    cod_filial    = b.cod_filial
                   and    id_nf_entrada = b.id_nf_entrada
                   AND    id_item       = b.id_item
                   AND    COD_IMPOSTO   = '10'
                   AND    ROWNUM        = 1)  cod_sit_trib_cof
              from   lf_nf_entrada          a,
                     lf_nf_entrada_item     b,
                     lf_nf_entrada_imposto  c
              where  a.cod_holding   = 'JNJ BR'
              and    a.dt_entrada >= to_date('01/01/2013','dd/mm/yyyy')
              and    a.cod_status  = '01'
              and    b.cod_holding  = a.cod_holding
              and    b.cod_matriz   = a.cod_matriz
              and    b.cod_filial   = a.cod_filial
              and    b.id_nf_entrada = a.id_nf_entrada
              and    c.cod_holding   = b.cod_holding
              and    c.cod_matriz    = b.cod_matriz
              and    c.cod_filial    = b.cod_filial
              and    c.id_nf_entrada = b.id_nf_entrada
              and    c.id_item       = b.id_item
              and    c.cod_imposto   = '01'
             --
             UNION ALL
             --   
             select distinct 
                    'S'                   TIPO_NF,
                    a.COD_HOLDING,
                    a.COD_MATRIZ,
                    a.COD_FILIAL, 
                    NULL                  ID_NF,
                    a.NUM_NF,
                    A.SERIE,
                    A.COD_MODELO,
                    a.COD_CFOP_LEGAL,
                    a.COD_CLIFOR,
                    a.DT_EMISSAO,
                    NULL                  DT_LANCAMENTO,
                    a.dt_emissao          DT_ENTRADA,
                    A.COD_STATUS,
                    A.COD_UF,
                    A.MUNICIPIO,
                    A.RAZAOSOCIAL,
                    A.CGC_CPF,
                    a.VLR_TOTAL_PRODUTOS,
                    b.VLR_BRUTO           TOTAL_ITEM,
                    a.ICMS_BASE_TOTAL,
                    a.ICMS_VALOR_TOTAL,
                    a.ICMS_ST_BASE_TOTAL,
                    a.ICMS_ST_VALOR_TOTAL,
                    a.VLR_FRETE,
                    a.VLR_SEGURO,
                    a.VLR_DESPESAS,
                    a.IPI_TRIBUTADO,
                    a.IPI_NAO_TRIBUTADO,
                    A.DOCNUM,
                    b.id_item,
                    b.COD_PRODUTO,
                    b.COD_UNID_MEDIDA,
                    b.COD_CLASSIF_FISCAL,
                    b.QUANTIDADE,
                    b.VLR_UNITARIO,
                    b.VLR_DESCONTO,
                    b.DESCRICAO_NOTA,
                    b.dig_cfop,
                    b.cod_grp_produto,
                    b.cod_iva,
                    C.COD_ORIGEM_PROD,
                    B.CTA_CTB_MATERIAL,
                    A.LANCTO_CONTABIL,
                    A.CHAVE_NF_E,
                    NULL                NUMERO_DI,
                    c.COD_TRIBUT_ICMS,
                    c.COD_SIT_TRIB_IPI,  
                    c.COD_IMPOSTO,
                    --
                    (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '01'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM          = 1 )  base_calculo_1,
                     --
                    (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '01'
                    and    cod_tp_lanc_imp = '2'             
                    AND    ROWNUM          = 1)  base_calculo_2,
                     --
                    (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '01'
                    and    cod_tp_lanc_imp = '3'             
                    AND    ROWNUM          = 1)  base_calculo_3,
                     --   
                  (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '01'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM        = 1)  vlr_imposto_icms_1,
                    --
                    (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '01'
                    and    cod_tp_lanc_imp = '2'
                    AND    ROWNUM        = 1)  vlr_imposto_icms_2,
                   --
                   -- Recupera a Aliquota do imposto IPI
                  (SELECT nvl(aliquota,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '01'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM          = 1)  aliquota_ICMS_1, 
                    --
                    (SELECT nvl(aliquota,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '01'
                    and    cod_tp_lanc_imp = '2'
                    AND    ROWNUM          = 1)  aliquota_ICMS_2,
                    --
                    --Recuperar o Valor do CST IPI
                   (SELECT cod_tribut_ipi
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '02'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM          = 1)  cod_tribut_ipi,
                    --
                    -- Recupera o Valor da Base de Calculo do imposto IPI
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '02'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM        = 1)  base_calculo_ipi_1,
                    --
                    -- Recupera o Valor da Base de Calculo do imposto IPI
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '02'
                    and    cod_tp_lanc_imp = '2'
                    AND    ROWNUM        = 1)  base_calculo_ipi_2,
                    --
                    -- Recupera o Valor da Base de Calculo do imposto IPI
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '02'
                    and    cod_tp_lanc_imp = '3'
                    AND    ROWNUM        = 1)  base_calculo_ipi_3,
                    -- Recupera o Tipo de lancamento do imposto IPI
                    -- Recupera a Aliquota do imposto IPI
                   (SELECT nvl(aliquota,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '02'
                    AND    ROWNUM          = 1)  aliquota_ipi,
                    -- Recupera o Valor do imposto IPI
                   (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '02'
                    AND    ROWNUM        = 1)  vlr_imposto_ipi,
                    --
                    -- Recuperar Valores do Imposto 03
                    --
                    -- Recupera o Valor da Base de Calculo do imposto 03
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '03'
                    and    cod_tp_lanc_imp = '1'
                    AND    ROWNUM          = 1)  base_calculo_st_1,
                    --
                    -- Recupera o Valor da Base de Calculo do imposto 03
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '03'
                    and    cod_tp_lanc_imp = '2'
                    AND    ROWNUM          = 1)  base_calculo_st_2,
                    --
                    -- Recupera o Valor da Base de Calculo do imposto 03
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_municipio   = b.cod_municipio
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '03'
                    and    cod_tp_lanc_imp = '3'
                    AND    ROWNUM          = 1)  base_calculo_st_3,
                    --
                    -- Recupera o Tipo de lancamento do imposto 03 - Substituicao Tributaria
                    -- Recupera a Aliquota do imposto Substituicao Tributaria
                   (SELECT nvl(aliquota,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '03'
                    AND    ROWNUM        = 1)  aliquota_st,
                    -- Recupera o Valor do imposto 03 - Substituicao Tributaria
                   (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '03'
                    AND    ROWNUM        = 1)  vlr_imposto_st,
                    --
                    -- Recuperar valores do Imposto 04
                    --
                    -- Recupera o Valor da Base de Calculo do imposto 04 - DIFAL
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = a.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '04'
                    AND    ROWNUM        = 1)  base_calculo_difal,
                    --
                    -- Recupera a Aliquota do imposto 04 - DIFAL
                   (SELECT nvl(aliquota,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO     = '04'
                    AND    ROWNUM          = 1)  aliquota_difal,
                    -- Recupera o Valor do imposto 04 - DIFAL
                   (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = '04'
                    AND    ROWNUM        = 1)  vlr_imposto_difal,
                    --
                    -- Recuperar valores do Imposto J6
                    --
                    -- Recupera o Valor da Base de Calculo do imposto J6 - DIFAL
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = 'J6'
                    AND    ROWNUM        = 1)  base_calculo_J6,
                    --
                    -- Recupera o Valor do imposto J6
                   (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = 'J6'
                    AND    ROWNUM        = 1)  vlr_imposto_J6,
                    --
                    -- Recuperar valores do Imposto J7
                    --
                    -- Recupera o Valor da Base de Calculo do imposto J7
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = 'J7'
                    AND    ROWNUM        = 1)  base_calculo_J7,
                    --
                    -- Recupera o Valor do imposto J7
                   (SELECT nvl(vlr_imposto, 0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = 'J7'
                    AND    ROWNUM        = 1)  vlr_imposto_J7,
                    --
                    -- Recuperar valores do Imposto J8
                    --
                    -- Recupera o Valor da Base de Calculo do imposto J8
                   (SELECT NVL(base_calculo,0)
                    FROM   lf_nf_saida_imposto
                    WHERE  cod_holding     = b.cod_holding
                    and    cod_matriz      = b.cod_matriz
                    and    cod_filial      = b.cod_filial
                    and    num_nf          = b.num_nf
                    and    serie           = b.serie
                    and    subserie        = b.subserie
                    and    dt_emissao      = b.dt_emissao
                    and    cod_cfop_legal  = b.cod_cfop_legal
                    and    cod_municipio   = b.cod_municipio
                    AND    id_item         = b.id_item
                    AND    COD_IMPOSTO   = 'J8'
                    AND    ROWNUM        = 1)  base_calculo_J8,
                    --
                    -- Recupera o Valor do imposto J8
                    (SELECT nvl(vlr_imposto, 0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = 'J8'
                     AND    ROWNUM        = 1)  vlr_imposto_J8,
                     --
                     -- Recuperar Valores do Imposto 09 - PIS
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 09
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '09'
                     and    cod_tp_lanc_imp = '1'
                     AND    ROWNUM        = 1)  base_calculo_pis_1,
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 09
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '09'
                     and    cod_tp_lanc_imp = '2'
                     AND    ROWNUM        = 1)  base_calculo_pis_2,
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 09
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '09'
                     and    cod_tp_lanc_imp = '3'
                     AND    ROWNUM        = 1)  base_calculo_pis_3,
                     --
                     -- Recupera o Tipo de lancamento do imposto 09 - PIS
                      -- Recupera a Aliquota do imposto 09 - PIS
                    (SELECT nvl(aliquota,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '09'
                     AND    ROWNUM        = 1)  aliquota_pis,
                     -- Recupera o Valor do imposto 09 - PIS
                    (SELECT nvl(vlr_imposto, 0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '09'
                     AND    ROWNUM        = 1)  vlr_imposto_pis,
                     -- Recupera o Codigo da situacao tributaria do imposto 09 - PIS
                    (SELECT cod_sit_trib_PIS
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '09'
                     AND    ROWNUM        = 1)  cod_sit_trib_pis,
                     --
                     -- Recuperar Valores do Imposto 10 - COFINS
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 10
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '10'
                     and    cod_tp_lanc_imp = '1'
                     AND    ROWNUM        = 1)  base_calculo_cofins_1,
                     --
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 10
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '10'
                     and    cod_tp_lanc_imp = '2'
                     AND    ROWNUM        = 1)  base_calculo_cofins_2,
                     --
                     --
                     -- Recupera o Valor da Base de Calculo do imposto 10
                    (SELECT NVL(base_calculo,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO     = '10'
                     and    cod_tp_lanc_imp = '3'
                     AND    ROWNUM        = 1)  base_calculo_cofins_3,
                     -- Recupera a Aliquota do imposto 10 - COFINS
                    (SELECT nvl(aliquota,0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '10'
                     AND    ROWNUM        = 1)  aliquota_cofins,
                     -- Recupera o Valor do imposto 10 - COFINS
                    (SELECT nvl(vlr_imposto, 0)
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '10'
                     AND    ROWNUM        = 1)  vlr_imposto_cofins,
                     -- Recupera o Codigo da situacao tributaria do imposto 10 - COFINS
                    (SELECT cod_sit_trib_cof
                     FROM   lf_nf_saida_imposto
                     WHERE  cod_holding     = b.cod_holding
                     and    cod_matriz      = b.cod_matriz
                     and    cod_filial      = b.cod_filial
                     and    num_nf          = b.num_nf
                     and    serie           = b.serie
                     and    subserie        = b.subserie
                     and    dt_emissao      = b.dt_emissao
                     and    cod_cfop_legal  = b.cod_cfop_legal
                     and    cod_municipio   = b.cod_municipio
                     AND    id_item         = b.id_item
                     AND    COD_IMPOSTO   = '10'
                     AND    ROWNUM        = 1)  cod_sit_trib_cof
             from   lf_nf_saida         a,
                    lf_nf_saida_item    b,
                    lf_nf_saida_imposto c
             where  a.cod_holding   = 'JNJ BR'
             and    a.dt_emissao    >= to_date('01/01/2013','dd/mm/yyyy')
             and    a.cod_status     = '01'
             and    b.cod_holding    = a.cod_holding
             AND    b.cod_matriz     = a.cod_matriz
             AND    b.cod_filial     = a.cod_filial
             AND    b.num_nf         = a.num_nf
             AND    b.serie          = a.serie
             AND    b.subserie       = a.subserie
             AND    b.dt_emissao     = a.dt_emissao
             AND    b.cod_cfop_legal = a.cod_cfop_legal
             AND    b.cod_municipio  = a.cod_municipio
             AND    c.cod_holding    = b.cod_holding
             AND    c.cod_matriz     = b.cod_matriz
             AND    c.cod_filial     = b.cod_filial
             AND    c.num_nf         = b.num_nf
             AND    c.serie          = b.serie
             AND    c.subserie       = b.subserie
             AND    c.dt_emissao     = b.dt_emissao
             AND    c.cod_cfop_legal = b.cod_cfop_legal
             AND    c.cod_municipio  = b.cod_municipio
             AND    c.id_item        = b.id_item
             and    c.cod_imposto    ='01';
    • Por glaucoleo
      Boa tarde Senhores (as),
       
      Utilizo o sql Navigator para fazer minhas consultas e de repente não consigo mais definir aliases para as tabelas que utilizo nas consultas, exemplo:

      Select p.codprod, p.descricao, p.codfornec from pcprodut p
       
      após o ponto ( . ) sempre aparecia a lista dos campos existente na tabela, agora não aparece mais...Alguém sabe me dizer porque?
       
    • Por nicolasbessa
      Boa tarde!
       
      Como aplicar a regra abaixo em um select?

      Regra Join
      Quando o campo substr(x, 1,1)  ='1'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'L'||lpad( x1, 2)) 

      Quando o campo substrt(x, 1,1) for igual ='A'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'M'||lpad( x1, 2)) 
       
      obrigado!
    • Por caiquestevanatto
      Boa noite pessoal,

      estou criando uma trigger em Oracle, que ao realizar uma venda (insert ou update), a trigger retire a quantidade vendida do estoque. Porém, estou com alguma dificuldades.

      A trigger criada é a seguinte:
      CREATE OR REPLACE TRIGGER BAIXA_ESTOQUE
      AFTER UPDATE OR INSERT ON ITEMPEDIDO
      FOR EACH ROW
      DECLARE IDPEDIDO INT;
      BEGIN
      SELECT IDPEDIDO INTO IDPEDIDO FROM PEDIDO WHERE IDPEDIDO = :NEW.IDPEDIDO;
      IF (IDPEDIDO > :NEW.IDPEDIDO) THEN
      UPDATE PRODUTO SET QUANTIDADE = QUANTIDADE - :NEW.QUANTIDADE 
      WHERE IDPRODUTO = :NEW.IDPRODUTO;
      END IF;
      END;

      Realizo o insert na tabela itempedido, porém quando vou verificar no select * from produto, a quantidade não foi modificada.

      Conseguem me ajudar onde estou errando ?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.