ETL - Help

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Ter, 15 Abr 2008 11:10 am

Pessoal,preciso de um help para incluir alguns atributos nas procedures de atualização do ETL. São eles - dt_desativação e cd_grupo_ar.

Script:
Código: Selecionar todos
CREATE OR REPLACE PROCEDURE sp_f_ar AS
/*************************************************************
Funcao     : ETL AR
Criado   em : 19/08/2007
Responsavel: Célio Nunes
Notas      :

**************************************************************/
--variaveis
vDT_INICIO            VARCHAR2(50)  := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS');
vLINHAS                  NUMERIC(10,0)   := 0;

--------------------------------------------------------------------------------
BEGIN

--Execute immediate 'truncate table F_AR';
delete from F_AR;
commit work;

INSERT INTO F_AR(cd_estabelecimento,hist_status, hist_dt_ultimo_contato, hist_dt_proximo_contato,
hist_observacao, ds_usuario_ar, sk_tempo, hist_fl_antecipacao)
(SELECT  ar.CD_ESTABELECIMENTO,
        CASE
           WHEN IND_STATUS='NA' then 'NÃO ANTECIPA'
           WHEN IND_STATUS='NP' then 'NÃO PRECISA'
           WHEN IND_STATUS='AC' then 'ANTECIPA (OUTROS CARTOES)'
           WHEN IND_STATUS='TA' then 'TAXA ALTA'
           WHEN IND_STATUS='AG' then 'AGENDADO'
           WHEN IND_STATUS='AT' then 'ANTECIPADO'
           WHEN IND_STATUS='NE' then 'NÃO ESTAVA'
           WHEN IND_STATUS='AL' then 'ACUMULAR LOTES'
           WHEN IND_STATUS='OC' then 'OCUPADO'
           WHEN IND_STATUS='RE' then 'RESPONSAVEL DECISOR não ESTAVA'
           WHEN IND_STATUS='NL' then 'NÃO LIGAR'
           WHEN IND_STATUS='NT' then 'NÃO ATENDE'
           WHEN IND_STATUS='TE' then 'TELEFONE ERRADO'
           WHEN IND_STATUS='EM' then 'EMPRÉSTIMO GIRO FÁCIL'
           WHEN IND_STATUS='AA' then 'ANTECIPAÇÃO AUTOMATICA AAR'
           WHEN IND_STATUS='SL' then 'SEM LOTES'
           WHEN IND_STATUS='PG' then 'PROBLEMAS COM A GOODCARD'
           WHEN IND_STATUS='JC' then 'JÁ CONTATADO NOS ÚLTIMOS TRES DIAS'
           WHEN IND_STATUS='RA' then 'REDE - ANTECIPA'
           WHEN IND_STATUS='RN' then 'REDE - NÃO ANTECIPA'
           ELSE IND_STATUS
      END AS HIST_STATUS,
      trunc(ar.DT_ULTIMO_CONTATO) AS DT_ULTIMO_CONTATO,
      trunc(ar.DT_PROXIMO_CONTATO) AS DT_PROXIMO_CONTATO,
      Upper(ar.OBSERVACAO) AS OBSERVACAO,
      Upper(u.DS_NOME_COMPLETO) as DS_USUARIO_AR,
      -1 AS sk_tempo,
      'P' AS HIST_FL_ANTECIPACAO
FROM  HISTORICO_AR@DB_ORADB01 ar, USUARIO@DB_ORADB01 u
WHERE ar.cd_usuario_ar = U.cd_usuario
AND   cd_historico_ar IN(
                      SELECT Max(cd_historico_ar)
                      FROM  HISTORICO_AR@DB_ORADB01 ar2 
                      --WHERE cd_Estabelecimento = 78654                       
                      GROUP BY cd_estabelecimento, Trunc(dt_ultimo_contato)
                      )

);
COMMIT;

UPDATE F_AR far
SET   (SK_TEMPO) = (SELECT DT.SK_TEMPO FROM  D_TEMPO DT
                    WHERE  hist_dt_ultimo_contato = dat_data);
COMMIT;

--verifica estabelecimentos antecipados ultimos 60 dias
UPDATE F_AR FAR
SET HIST_FL_ANTECIPACAO = 'M'
WHERE EXISTS(SELECT   1
              FROM    estabelecimento_adiantamento@db_oradb01 EA
              WHERE   EA.cd_estabelecimento = FAR.CD_ESTABELECIMENTO
              AND     dt_reprovacao_adiantamento IS NULL
              AND     dt_liberacao_adiantamento IS NOT null
              AND     dt_liberacao_adiantamento BETWEEN (far.hist_dt_ultimo_contato-60) AND (far.hist_dt_ultimo_contato+1)
             );
COMMIT;

SELECT Count(*)
INTO vLINHAS
FROM F_AR;

GRAVA_LOG('SP_F_AR',vDT_INICIO, vLINHAS);
commit work;

END;
mariogus
Localização: Porto Alegre - RS

Mensagemem Ter, 15 Abr 2008 1:36 pm

OI...

Desculpe a ignorância... mas num entendi o que você quis dizer!
:roll:

Poderia explicar novamente?
jucruzjc
Localização: Santa Bárbaba d'Oeste

Mensagemem Ter, 15 Abr 2008 2:00 pm

Você deseja passar essas duas informações por PARÂMETRO e, fazer com que elas participem do teu INSERT?
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Ter, 15 Abr 2008 2:02 pm

Sim...a minha dúvida também consiste se preciso mudar a Fato - F_AR?
mariogus
Localização: Porto Alegre - RS



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes