Hola,
A ver si alguien me puede ayudar con este codigo, con el que estoy recibiendo un error ORA-01403 no data found, el cual creía tener controlado...
Resumiendo lo que hace, a partir de un cursor, consulto si el CIF esta en otra tabla, y si no está inserto registro, y si está actualizo un campo.
Si el cif aparece 2 veces en el cursor, en la tabla actualizará otro campo:
declare
cursor cur1 is select pais, cdtercero, dstercero, cddnicif, cdcodabr, cdcuent from tabla1;
v_nif varchar2(25);
v_proveedor varchar2(10);
v_acreedor varchar2(10);
BEGIN
for c1 in cur1 loop
BEGIN
SELECT nif_code into v_nif from tabla2 where nif_code = c1.cddnicif;
EXCEPTION
when no_data_found then
dbms_output.put_line('No hay datos para ' || c1.cddnicif);
v_nif := NULL;
END;
IF v_nif = null then
INSERT INTO tabla2 values (c1.cddnicif, null, c1.dstercero, null, c1.cdtercero, null,sysdate, sysdate, null, c1.pais, null);
ELSE
select proveedor_number, acreedor_number into v_proveedor, v_acreedor from tabla2 where nif_code = c1.cddnicif;
IF v_proveedor = c1.cdtercero and v_acreedor is null then
UPDATE tabla2 set acreedor_number = c1.cdtercero where nif_code = c1.cddnicif;
ELSE
UPDATE tabla2 set proveedor_number = c1.cdtercero where nif_code = c1.cddnicif;
END IF;
END IF;
v_nif := null;
v_proveedor := null;
v_acreedor := null;
end loop;
EXCEPTION
when others then
dbms_output.put_line('error en ' || sqlerrm);
COMMIT;
END;
Y cuando lo ejecuto recibo el famoso error:
error en ORA-01403: No se ha encontrado ningún dato