Não estou conseguindo identificar o porque do código não retornar os endereços. Podem me ajudar nesse sentido.
Code:
CURSOR cm_pes IS
SELECT *
FROM itg.cm_pessoa
WHERE cm_pessoa.dt_processamento IS NULL;
CURSOR cm_pes_vw(pi_cd_pessoa cm_pessoa_vw.cd_pessoa%type) IS
SELECT *
FROM itg.cm_pessoa_vw
WHERE cm_pessoa_vw.CD_PESSOA = pi_cd_pessoa;
--
CURSOR cm_pes_end_vw(pi_cd_pessoa cm_pessoa_endereco_vw.cd_pessoa%type) IS
SELECT *
FROM itg.cm_pessoa_endereco_vw
WHERE cm_pessoa_endereco_vw.CD_PESSOA = pi_cd_pessoa
;
--
CURSOR cm_pes_tel_vw(pi_cd_pessoa cm_pessoa_telefones_vw.cd_pessoa%type) IS
SELECT *
FROM itg.cm_pessoa_telefones_vw
WHERE cm_pessoa_telefones_vw.CD_PESSOA = pi_cd_pessoa;
r_cm_pes_end_vw cm_pes_end_vw%rowtype;
BEGIN
--
For r_pes IN cm_pes loop
For r_pes_vw IN cm_pes_vw(r_pes.id_pessoa) loop
v_continua :=1;
BEGIN
if r_pes_vw.nome=r_pes_vw.nm_pessoa then
-- este seria o padrão
v_continua := 1;
elsif r_pes_vw.nome<>r_pes_vw.nm_pessoa and r_pes_vw.nome not like '%POSTO%' then
-- fora do padrão
-- pode ter sido cadastrado errado, nome não confere com a razao social oi
-- pode ser um posto, caso seja posto, não queremos trabalhar o registro
v_continua:=1;
else
-- deve ser um posto
v_continua:=0;
end if;
IF v_continua = 1 THEN
OPEN cm_pes_end_vw (r_pes_vw.cd_pessoa);
FETCH cm_pes_end_vw
INTO r_cm_pes_end_vw;
IF cm_pes_end_vw%NOTFOUND THEN
CLOSE cm_pes_end_vw;
v_continua:=0;
RAISE e_sem_endereco;
else
CLOSE cm_pes_end_vw;
end if;
-- Carrega registros na corp_pessoas
corp_pessoa.CD_PESSOA := r_pes_vw.CD_PESSOA;
corp_pessoa.NM_PESSOA := r_pes_vw.NM_PESSOA;
corp_pessoa.NR_CPF := TRIM(r_pes_vw.NR_CPF);
corp_pessoa.CD_PROFISSAO := r_pes_vw.CD_PROFISSAO;
corp_pessoa.DT_NASCIMENTO := r_pes_vw.DT_NASCIMENTO;
corp_pessoa.FG_SEXO := TRIM(r_pes_vw.FG_SEXO);
corp_pessoa.CD_ESTADO_CIVIL := TO_NUMBER(TRIM(r_pes_vw.CD_ESTADO_CIVIL));
corp_pessoa.CD_PAIS := r_pes_vw.CD_PAIS;
corp_pessoa.DT_INSERCAO := r_pes_vw.DT_INSERCAO;
corp_pessoa.NM_PESSOA_REDUZIDO := SUBSTR(r_pes_vw.NM_PESSOA_REDUZIDO,1,30);
corp_pessoa.DS_ENDERECO := SUBSTR(r_pes_vw.DS_ENDERECO,1,40);
corp_pessoa.SG_ESTADO := UPPER(SUBSTR(TRIM(r_pes_vw.SG_ESTADO),1,2));
corp_pessoa.NR_MUNICIPIO_IBGE := SUBSTR(r_pes_vw.NR_MUNICIPIO_IBGE,1,5);
corp_pessoa.NM_MUNICIPIO_IBGE := UPPER(TRIM(r_pes_vw.NM_MUNICIPIO_IBGE));
corp_pessoa.NR_CEP := r_pes_vw.NR_CEP;
corp_pessoa.NR_DDI := r_pes_vw.NR_DDI;
corp_pessoa.NR_DDD := SUBSTR(TRIM(r_pes_vw.NR_DDD),1,3);
corp_pessoa.NR_TELEFONE := SUBSTR(r_pes_vw.NR_TELEFONE,1,15);
corp_pessoa.DE_EMAIL := r_pes_vw.DE_EMAIL;
corp_pessoa.DS_COMPLEMENTO := TRIM(r_pes_vw.DS_COMPLEMENTO);
corp_pessoa.NM_BAIRRO := r_pes_vw.NM_BAIRRO;
corp_pessoa.DE_ORIGEM := 'CM.PESSOA';
corp_pessoa.DS_NUMERO := TRIM(r_pes_vw.DS_NUMERO);
corp_pessoa.FL_TIPO_PESSOA := r_pes_vw.FL_TIPO_PESSOA;
corp_pessoa.DE_HOME_PAGE := TRIM(r_pes_vw.DE_HOME_PAGE);
corp_pessoa.NM_CONTATO := TRIM(r_pes_vw.NM_CONTATO);
--
corp.corp_ireceive_pessoas_pakg.ireceive_pessoas(corp_pessoa);
COMMIT;
end if;
---- Tratamento de Erro ----
EXCEPTION
WHEN e_sem_endereco THEN
UPDATE itg.cm_pessoa
SET de_observacao = 'ERRO AO PROCESSAR'
WHERE dt_processamento is null;
WHEN OTHERS THEN
ITG_GERA_LOG_PRC('ITG_CLIENTES',
'ITG_CM_PESSOA_PKG.PROCESSA_CLIENTE_PESSOA)',
'NÃO EXISTEM DADOS NA FUNÇÃO VERIFICA CLIENTE.' ||
TRIM(SYSDATE) || '- PESSOA: ' || r_pes_vw.CD_PESSOA ||
'. STATUS - SQL Code: ' || TRIM(SQLCODE) ||
' SQL ErrMsg: ' || TRIM(SQLERRM));
END;
End loop;
COMMIT;
if v_continua=1 then
--Busca codigo da pessoa para a inclusao do endereco
--Tabela cor.pessoa, busca pelo cpf e tipo de pessoa
BEGIN
SELECT cd_pessoa
INTO v_cd_pessoa
FROM corp.pessoas
WHERE LPAD(TRIM(nr_cpf),14,'0')=LPAD(TRIM(corp_pessoa.nr_cpf),14,'0');
--AND TRIM(fl_tipo_pessoa) = TRIM(corp_pessoa.fl_tipo_pessoa);
exception
when others then
v_cd_pessoa := 0;
end;
--FAZ A INCLUSÃO DO ENDERECO APENAS QUANDO POSSUIR CÓDIGO DA PESSOA
IF (NVL(v_cd_pessoa, 0) > 0) THEN
--Loop nos endereços da view cm_pessoa_endereco_vw
--cor.cor_ireceive_pessoas_endereco_pakg.ireceive_pessoas(cor_pessoa_endereco);
For r_pes_end_vw IN cm_pes_end_vw(r_pes.id_pessoa) loop
BEGIN
---- Tratamento de Erro ----
if v_municipio is not null then
RAISE e_sem_municipio;
end if;
if v_estado is not null then
RAISE e_sem_estado;
end if;
if v_cep is not null then
RAISE e_sem_cep;
end if;
if v_logradouro is not null then
RAISE e_sem_logradouro;
end if;