Hello friends, I am currently starting in the area of pl / sql. I wonder if anyone could give me a hand with a situation. I' am creating a procedure that updates TARGET TABLE. In case it finds new records in the BASE TABLE. If there is something new in the BASE TABLE, i have to insert the new records in the TARGET TABLE.
To acomplish this I have done the following: PROCEDURE automatizacion_celdas ( ) IS -----VARIABLES DEL PROCEDIMIENTO----- v_id it_bi.cnf_cellsite_optima.id%type; v_nombre it_bi.cnf_cellsite_optima.nombre%type; v_latitude it_bi.cnf_cellsite_optima.latitude%type; v_longitud it_bi.cnf_cellsite_optima.longitude%type; v_opid it_bi.cnf_cellsite_optima.opid%type; v_opnombre it_bi.cnf_cellsite_optima.opnombre%type; v_tecnologia it_bi.cnf_tr_celdas_optima.tecnologia%type; v_provincia it_bi.cnf_tr_celdas_optima.cod_provincia%type; v_ciudad it_bi.cnf_tr_celdas_optima.cod_ciudad%type; v_descripcion it_bi.cnf_tr_celdas_optima.cell_description%type; v_count number; v_etapa it_brain.flw_proceso_log.etapa%TYPE; v_cod_etapa it_brain.flw_proceso_log.cod_etapa%TYPE; BEGIN po_cod_err := 'DWH-00000'; --.AUTOMATIZACION_CELDAS: Error al actualizar datos UPDATE celdas c Set nombre = (SELECT nombre From Tabla_base ct where ct.id = c.id AND ct.nombre <> c.nombre ), latitude = (SELECT latitude From Tabla_base ct where ct.id = c.id AND ct.latitude <> c.latitude ), longitude = (SELECT longitude From Tabla_base ct where ct.id = c.id AND ct.nombre <> c.nombre ), opid = (SELECT opid From Tabla_base ct where ct.id = c.id AND ct.nombre <> c.nombre ), opnombre = (SELECT opnombre From Tabla_base ct where ct.id = c.id AND ct.opid <> c.opid ), tecnologia = (SELECT tecnologia From Tabla_base ct where ct.id = c.id AND ct.tecnologia <> c.tecnologia ), cod_provincia = (SELECT cod_provincia >From Tabla_base ct where ct.id = c.id AND ct.cod_provincia <> c.cod_provincia ), cod_ciudad = (SELECT cod_ciudad From Tabla_base ct where ct.id = c.id AND ct.cod_ciudad <> c.cod_ciudad ), cell_description = (SELECT cell_description >From Tabla_base ct where ct.id = c.id AND ct.cell_description <> c.cell_description ); po_cod_err := 'DWH-00000'; --.AUTOMATIZACION_CELDAS: Error al iniciar iteración FOR x in (select id from it_bi.cnf_tr_celdas_optima) LOOP ---------- Inicializacion de Variables------------ v_id := 0; v_nombre := 0; v_latitude := 0; v_longitud := 0; v_opid := 0; v_opnombre := 0; v_tecnologia := 0; v_provincia := 0; v_ciudad := 0; v_descripcion := 0; v_count := 0; Begin -----------Busco nuevos registro en la tabla----------------- select id, nombre, latitude, longitude, opid, opnombre,'Cell '|| opid ||' - '||substr(nombre, 1,11)||' -'||' GSM ' into v_id, v_nombre,v_latitude,v_longitud,v_opid,v_opnombre, v_descripcion from Tabla_base o where not EXISTS (select 1 from celdas t where t.id = x.id ); po_cod_err := 'DWH-00000'; --.AUTOMATIZACION_CELDAS: Error al insertar datos -----------inserto registros en caso de haber nuevos----------------- v_count := sql%rowcount; IF v_count >= 1 then insert into celdas (id, nombre, latitude, longitude, opid, opnombre, tecnologia, cod_provincia, cod_ciudad, cell_description, fch_inicio, fch_fin, estado_actual ) VALUES (v_id, v_nombre, v_latitude, v_longitud, v_opid, v_opnombre, 'GSM', null, null, v_descripcion, null, null, null ); commit; END IF; end; end loop; END; What I want is to find some function to tell me if the select bring records (if there are records), and if it is >= 1 then to insert the records in the TARGET TABLE. I'm using the sql%rowcount and does not do what I seek . I will appreciate if someone can give me a guide or suggest me something. Thank you very much! I'll wait for your answers. Greetings!! -- You received this message because you are subscribed to the Google Groups "Oracle PL/SQL" group. To post to this group, send email to Oracle-PLSQL@googlegroups.com To unsubscribe from this group, send email to oracle-plsql-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Oracle-PLSQL?hl=en