Actualizacion de una bs oracle +toad

Quiero que me ayuden a programar para actualizar una bd oracle tengom que actualizar toda una columna de mi tabla. Me puedes ayudar
UPDATE  TREE
SET NIT_NB=VALOS_VC
WHERE IFC=V_IFC
---
UPDATE DERTR  -- Modificaciones del valorVC
SET VALOR_VC = 1            -- Cambiar valor
where IFC='1000000000'      -- IFC identificador
and NOMBRE_IDENTIFICADOR_VC='NIT'
Estas son mis dos tablas como lo puedes ver. Lo que ruiero realizar es lo siguiente
tengo que actualizar los datos de los campos NIT_NB=VALOS_VC de las dos tablas
actualmente para la tabla 1
NIT_NB----- ANTES
456
123
456
789
VALOS_VC
456
123
456
789
Son iguales, y tengo que actualizar o modificar a.
Nit_nb ------ lo que espero
1
2
3
4
5
VALOS_VC
1
2
3
4
5
como lo hago, utilizando cursores.tengo que programar para que este query corra en una ejecucion
incrementandose+1 `para cada fila.NIT_NB=VALOS_VC,no quiero modificar una * uno quiero hacer
un query que actualise a todos
ACTUALMENTE ESTOY UTILIZANDO UNA BD ORACLE Y EL TOAD...
Ahora si me conprendiste espero tu ayuda
Cabe recalcar solo quiero modificar los datos de la tabla

1 Respuesta

Respuesta
1
Espero haberte entendido, tal vez te funcionaria algo como esto:
function actualiza return varchar2 is
 vcorrelativo number;
begin
  cursor datos is  -- constuye el cursor con los datos a modificar
   select ifc from dertr
   where nombre_identificador_vc='nit' ;
   vcorrelativo := 0;
   for vdatos in datos loop
      vcorrelativo := vcorrelativo + 1;
      update tree set nit_nb=vcorrelativo where ifc=vdatos.ifc;
      update dertr set valor_vc=vcorrelativo where ifc=vdatos.ifc;
      commit;
   end loop;
   return 'ok';
exception
   when others then
       return 'ha ocurrido el error: '||sqlcode||': '||sqlerrm;
end;
Revisa la creación del Cursor ya que no te comprendí muy bien la relación entre las tablas, pero hasta donde entendí creo que el cursor que te describo abarca los datos que quieres actualizar, tal vez pudieras ponerle un ORDER BY si tiene alguna importancia el orden.
Cracias por tu ayuda...
ahoar te sigo molestando y espero que me colabores
tengo este escript... como observar actualiza los datos de mi tabla de mi BD Oracle10g
declare
inserta varchar2(200);
      cursor curso is
        select * from tpdr_personas     --  order by codigo_persona_nb
        where  codigo_persona_nb>='1' and  codigo_persona_nb<='10'
       order by codigo_persona_nb
        for update of apellido_paterno_vc,apellido_materno_vc,nombres_vc;
    begin
    --inserta:=a;
      for cur in curso loop
            update tpdr_personas
            set apellido_paterno_vc='contibuyente',apellido_materno_vc='abcdr',  nombres_vc='eritf'
       where current of curso;
     end loop;
    ----- commit;
    dbms_output.put_line('proceso correcto');
   end;
   lo que quiero qeu ocurra para que no que tenga que estar introdiciendo uno por uno
               set apellido_paterno_vc='contibuyente',apellido_materno_vc='abcdr',  nombres_vc='eritf'
   Quiero que los datos no se repitan uno del otro de cada contribuyente o persona quiero una combinación no
me interesa los datso pueden ser cualquier dato alfanumérico... como lo vez
echame una mano...
Gracias me sirve de mucho tu ayuda... pero te envío otra
Podrías ingresar los valores que deseas actualizar en una tabla y leerla de ahí actualizando los campos que necesitas; en esa otra tabla relaciona el código de persona y puedes crear variables se guarden el valor de esa otra tabla. Por ejemplo:
Tabla adicinal:
Codigo   Apellido_paterno   Apellido_materno  Nombres
     1 aaaaaaa bbbbbbbbb abababa
     2 CCCCCCC DDDDDDDD CACACACA
...
En el Loop agrega antes del upadte:
select apellido_paterno,apellido_materno,nombres into v1, v2, v3 from tabla_adicional where codigo=cursor.codigo_persona_nb;
Y luego haces el update con las variables:
update tpdr_personas
            set apellido_paterno_vc=v1,apellido_materno_vc=v2,  nombres_vc=v3;
La digitada no te la quitas en la tabla adicional, porque de algún lado tiene que introducir los datos pero lo puedes subir desde una hoja excel hacia una tabla Oracle con el Toad. No te entendí muy bien lo que no se repitan los datos de los contribuyentes, pero podrías crear un indice único con los campos que no quieres que se repitan.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas