SQL - Cursor con CASE y UPDATE

 
Vista:
Imágen de perfil de Erickpa

Cursor con CASE y UPDATE

Publicado por Erickpa (1 intervención) el 26/12/2016 18:57:44
Hola estimados, soy de Costa Rica y estoy iniciando la carrera de Sistemas.

Quisiera su aporte para poder actualizar los datos más sensibles de clientes (correo,cuenta,teléfono,email,nombre,apellidos) dentro de una base de datos Oracle.

He creado un cursor que busca los campos que necesito y cuando encuentra actualiza el registro, en este caso la prueba la estoy creando con algunos ID de clientes para no actualizar todos los registros, como verán haciendo uno a uno funciona y la variable le suma un +1 cuando encuentra el nombre.

Dentro de la BD existen clientes naturales,residentes,pasaportes y Jurídicos, quisiera intentar con un CASE que cuando el ID del cliente sea "CJU" le coloque por ejemplo "RESULTADO" pero que se sume un 1 cada vez igual que con el cliente con el tipo ID "CNA" o natural. Cuando sea el ID de tipo "CRE" le coloque "OTROS".

Posterior quisiera ir cambiando en el CASE los apellidos, email, teléfonos, etc.

Muchas gracias...

/*El cursor es: */


Declare
v_acum number;

cursor c_actualiza is
select a.cod_cia,
a.cod_docum,
a.tip_docum,
a.nom_tercero,
a.nom2_tercero,
a.ape1_tercero,
a.ape2_tercero,
a.tlf_movil,
b.tlf_numero,
b.email,
b.tlf_numero_com,
b.email_com,
b.cta_cte,
b.txt_email,
b.cod_tarjeta,
b.num_tarjeta,
b.fec_vcto_tarjeta
from a1001399 a, a1001331 b
where a.cod_cia = 1
and a.nom_tercero != 'null'
and a.tip_docum = b.tip_docum
and a.cod_docum = b.cod_docum
and a.cod_docum in ('111810464',
'111610631',
'800870150',
'110550726',
'111830715',
'111060800',
'111120585',
'110030332',
'111460930',
'111660408',
'110320878',
'110700388',
'111380644',
'111040472',
'4000001021',
'3101373595',
'3005045162',
'3101502007',
'3101397485',
'3101294479',
'0034300757',
'01002312815',
'011203096',
'012180004480193988',
'011203096',
'07469542');

begin

v_acum := 0;

for reg in c_actualiza loop

v_acum := v_acum + 1;

begin

UPDATE a1001399 i
SET i.nom_tercero = 'PRUEBASCR' || ' - ' || v_acum
where i.cod_cia = reg.cod_cia
and i.tip_docum = reg.tip_docum
and i.cod_docum = reg.cod_docum;

END;

commit;

dbms_output.put_line(reg.nom_tercero);

end loop;

end;

--------------------------------------------------------------------------------------





Prueba_nombre_cliente
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder