Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre Renato

em criar cursor

Recommended Posts

Colegas,

 

Tenho o seguinte select:

 

Select 
     f.nrregistro, 
     f.nrcontrato||lpad(f.nrfamilia,6,'0') cdcliente, 
     f.nrpessoa_titular cliente, 
     pe.Nopessoa, 
     cp.nrpessoa_paga, 
     v.NOPESSOA
FROM familia f, 
     contrato_da_pessoa cp, 
     v_contrato_da_pessoa v, 
     cliente c, 
     pessoa pe
Where f.nrregistro = cp.nrregistro and f.nrcontrato = cp.nrcontrato and f.nrpessoa_titular <> cp.nrpessoa_paga and cp.nrregistro = v.NRREGISTRO and cp.nrcontrato = v.NRCONTRATO and v.TPUSU_CONTRATO = 'P' AND cp.cdsit_contr_pessoa = '0' and f.nrpessoa_titular = pe.nrregistro and (cp.dtfimcontrato Is Null Or cp.dtfimcontrato > trunc(Sysdate)) and (c.nrregistro_cliente = f.nrpessoa_titular And c.nrregistro_cliente <> cp.nrpessoa_paga)

 

O retorno dessa pesquisa me traz quase 400 casos onde c.nrregistro_cliente é diferente de cp.nrpessoa_paga.

Eu preciso alterá-los para esses dois campos sejam iguais.

 

Tentei montar alguns cursores, mas não está dando certo.

Alguém poderia me ajudar?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual tabela você quer alterar ?

 

Exemplo de bloco para este tipo de correcao

 

begin
  for r in (select ....
			  from .... )
  loop
	 update tabela 
	 set campo01 = r.campoxx /*campo do select correto*/
	 where chave = r.chave; /*chave da tabela obter no select*/
  end loop; 
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, valeu cara!

Eu tinha conseguido um help antes. Foi exatamente do jeito que você falou e a solução foi essa:

 

begin for x in (  Select 	  f.nrregistro, 	  f.nrcontrato||lpad(f.nrfamilia,6,'0') cdcliente, 	  f.nrpessoa_titular, 	  pe.Nopessoa nome, 	  cp.nrpessoa_paga, 	  v.NOPESSOA   FROM familia f, 	  contrato_da_pessoa cp, 	  v_contrato_da_pessoa v, 	  cliente c, 	  pessoa pe  WHERE f.nrregistro = cp.nrregistro and f.nrcontrato = cp.nrcontrato and f.nrpessoa_titular <> cp.nrpessoa_paga and cp.nrregistro = v.NRREGISTRO and cp.nrcontrato = v.NRCONTRATO and v.TPUSU_CONTRATO = 'P' AND cp.cdsit_contr_pessoa = '0' and f.nrpessoa_titular = pe.nrregistro and (cp.dtfimcontrato Is Null Or cp.dtfimcontrato > trunc(Sysdate)) and (c.nrregistro_cliente = f.nrpessoa_titular And c.nrregistro_cliente <> cp.nrpessoa_paga)   )loop   update cliente set nrregistro_cliente = x.nrpessoa_paga   where cdcliente = x.cdcliente;end loop;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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