problema con las exception

tema enviado por Ignatius en SQL
tema iniciado el 16/12/2008
Te un paquete en el que trato 3 excepciones, el caos es que me dice q no las tengo definidas y lo he hecho no entiendo por que es. Os adjunto el pl CREATE OR REPLACE PACKAGE BODY Pck_Clientes_Lopd_005 IS PROCEDURE prc_act_datos_personales_lopd IS Campo varchar2(30); A NUMBER; B NUMBER; NoexisteTabla EXCEPTION; NoexisteCampo EXCEPTION; HayError BOOLEAN; TYPE arr_number IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; v_id_cliente arr_number; v_data_type all_tab_columns.data_type%TYPE; v_data_length all_tab_columns.data_length%TYPE; v_data_precision all_tab_columns.data_precision%TYPE; lv_query VARCHAR2(2000); lv_query_where VARCHAR2(1000) := 'WHERE'; nuevo_filtro VARCHAR2(1000); nuevo_filtro_aux VARCHAR2(1000); pos_almohadilla NUMBER; pos_almohadilla1 NUMBER; longitud NUMBER; campo_nombre VARCHAR2(60); aux VARCHAR2(60); v_id_error NUMBER(4); err_msg VARCHAR2(200); filtro_nombre VARCHAR2(1); prueba VARCHAR2(1); PROCEDURE carga_tabla_clientes IS BEGIN -- Cargamos los clientes de borra bravo /* INSERT INTO LOPD_CLIENTES(ID_CLIENTE,SW_PASADO) (SELECT ID_CLIENTE,'N' FROM JBRAVO.CLIE_CLIENTES_HIS_DELETE@K570_PRODU MINUS SELECT ID_CLIENTE,'N' FROM LOPD_CLIENTES);*/ -- Recogemos los datos necesarios de clie_clientes_dw FOR clientes IN (SELECT DISTINCT(id_cliente) id_cliente FROM LOPD_CLIENTES WHERE sw_pasado <> 'S') LOOP FOR clientes2 IN (SELECT ccd.id_cliente cliente, ccd.nombre nombre, ccd.primer_apellido primer_apellido, ccd.segundo_apellido seg_apellido, ccd.numero_doc_acred num_acred FROM CLIE_CLIENTES_DW ccd WHERE ccd.id_cliente = clientes.id_cliente) LOOP UPDATE LOPD_CLIENTES SET nombre = clientes2.nombre, primer_apellido = clientes2.primer_apellido, segundo_apellido = clientes2.seg_apellido, numero_doc_acred = clientes2.num_acred WHERE id_cliente = clientes2.cliente; ww_cont_actualizados := ww_cont_actualizados + SQL%ROWCOUNT; COMMIT; END LOOP; END LOOP; END carga_tabla_clientes; PROCEDURE actualizar_lopd_clientes IS BEGIN UPDATE LOPD_CLIENTES SET nombre = NULL, primer_apellido = NULL, segundo_apellido = NULL, numero_doc_acred = NULL, sw_pasado='S'; END actualizar_lopd_clientes; BEGIN --Inicio proceso log ww_id_proceso_batch := 779; ww_num_paso := 1; Prc_Dwge0025('S',ww_id_proceso_batch,ww_num_paso,ww_cont_leidos,ww_cont_escritos,ww_cont_borrados,ww_cont_actualizados,v_sqlerrm); -- Leer y cargar datos Clientes carga_tabla_clientes; FOR cursor_clientes_lopd IN (SELECT id_cliente, nombre, primer_apellido, segundo_apellido, numero_doc_acred, sw_pasado, f_solicitud FROM LOPD_CLIENTES) LOOP /* FOR cursor_clientes_tabla IN ( SELECT T1.id_tabla, T1.tabla, T1.filtro, T2.owner FROM LOPD_CLIENTES_TABLAS T1, all_tables T2 where id_tabla not in (25,26) and T1.tabla = T2.Table_name(+)) LOOP */ IF cursor_clientes_lopd.sw_pasado = 'S' THEN FOR cursor_clientes_tabla IN (SELECT id_tabla, tabla, filtro, owner FROM LOPD_CLIENTES_TABLAS WHERE id_tabla NOT IN (25,26)) LOOP SELECT COUNT(*)INTO A FROM ALL_TABLES WHERE TABLE_NAME=cursor_clientes_tabla.tabla AND OWNER= cursor_clientes_tabla.owner; -- Si no existen datos IF A = 0 THEN RAISE NoexisteTabla; END IF; --Inicializamos la query para el siguiente cliente lv_query := NULL; lv_query := lv_query || ' UPDATE '; lv_query := lv_query || cursor_clientes_tabla.tabla || ' A SET '; lv_query_where := ' WHERE '; FOR cursor_clientes_campos IN (SELECT nombre_campo, valor_campo, sw_fijo FROM LOPD_CLIENTES_CAMPOS_TABLA WHERE id_tabla = cursor_clientes_tabla.id_tabla) LOOP campo := cursor_clientes_campos.nombre_campo; SELECT COUNT(*) INTO B FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=cursor_clientes_tabla.tabla AND COLUMN_NAME= cursor_clientes_campos.nombre_campo AND OWNER= cursor_clientes_tabla.owner; -- Si no existen datos IF B = 0 THEN RAISE NoexisteCampo; END IF; IF (cursor_clientes_campos.sw_fijo = 'S') THEN IF(cursor_clientes_campos.valor_campo = 'NULO') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || ' = NULL,'; ELSIF(cursor_clientes_campos.valor_campo = 'DOCUMENTO') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= ''LOPD-' || cursor_clientes_lopd.id_cliente || ''','; ELSIF (cursor_clientes_campos.valor_campo= 'FECHA') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= TO_DATE(''01/01/''||TO_CHAR(A.'||cursor_clientes_campos.nombre_campo||',''YYYY''),''DD/MM/YYYY'')'|| ' ,'; --lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= ''01/01/''||TO_CHAR(A.'||cursor_clientes_campos.nombre_campo||',''YYYY'')'|| ' ,'; ELSE lv_query := lv_query || cursor_clientes_campos.nombre_campo || '=' || cursor_clientes_campos.valor_campo || ','; END IF; ELSE -- sw_fijo = N SELECT data_type, data_length, data_precision INTO v_data_type, v_data_length, v_data_precision FROM all_tab_columns WHERE table_name = cursor_clientes_tabla.tabla AND column_name = cursor_clientes_campos.nombre_campo; IF (cursor_clientes_campos.valor_campo = 'NULO') THEN aux := 'NULL'; ELSIF (cursor_clientes_campos.valor_campo = 'DOCUMENTO') THEN aux := 'LOPD-' || cursor_clientes_lopd.id_cliente||''''; ELSE aux := cursor_clientes_campos.valor_campo; END IF; IF v_data_type = 'VARCHAR2' THEN FOR i IN 1..v_data_length-1 LOOP cursor_clientes_campos.valor_campo := cursor_clientes_campos.valor_campo || aux; END LOOP; lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ''' || cursor_clientes_campos.valor_campo || ''','; ELSIF v_data_type = 'NUMBER' THEN FOR i IN 1..v_data_precision - 1 LOOP cursor_clientes_campos.valor_campo := cursor_clientes_campos.valor_campo || aux; END LOOP; lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ' || cursor_clientes_campos.valor_campo || ','; ELSE -- el tipo no es ni varchar ni number lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ' || cursor_clientes_campos.valor_campo || ','; END IF; END IF; END LOOP; -- Modificamos la variable lv_query para eliminar la última coma longitud := LENGTH(lv_query); lv_query := SUBSTR(lv_query,1,longitud-1); -- Añadimos la parte del filtro lv_query := lv_query || lv_query_where; nuevo_filtro_aux := cursor_clientes_tabla.filtro; filtro_nombre:=''; FOR i IN 1..5 LOOP pos_almohadilla := INSTR(nuevo_filtro_aux,'#@'); pos_almohadilla1:= INSTR(nuevo_filtro_aux,'@#'); campo_nombre:=SUBSTR(nuevo_filtro_aux,pos_almohadilla+2,pos_almohadilla1-pos_almohadilla-2); IF (campo_nombre='ID_CLIENTE') THEN -- Modificamos el campo id_cliente longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.id_cliente); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.id_cliente ||'''' || SUBSTR(cursor_clientes_tabla.filtro,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='NOMBRE') THEN -- Modificamos el campo nombre filtro_nombre:='S'; longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.nombre); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.nombre ||'''' || SUBSTR(cursor_clientes_tabla.filtro,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='PRIMER_APELLIDO') THEN -- Modificamos el campo primer_apellido longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.primer_apellido); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.primer_apellido ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='SEGUNDO_APELLIDO') THEN -- Modificamos el campo segundo_apellido longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.segundo_apellido); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.segundo_apellido ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='NUMERO_DOC_ACRED') THEN-- Modificamos el campo numero_doc_acred longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.numero_doc_acred); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.numero_doc_acred ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); END IF; END LOOP; lv_query := lv_query || nuevo_filtro_aux ; BEGIN --DBMS_OUTPUT.PUT_LINE ('Inicio: '||TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS')); prueba:= SUBSTR(cursor_clientes_lopd.nombre,1,1); IF (filtro_nombre='S' AND prueba ='*' ) THEN DBMS_OUTPUT.PUT_LINE ('No se actualiza por filtro ***'); ELSE EXECUTE IMMEDIATE lv_query; END IF; EXECUTE IMMEDIATE lv_query; --DBMS_OUTPUT.PUT_LINE ('Final: '||TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS')); COMMIT; EXCEPTION WHEN NoexisteTabla THEN HayError := true; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; err_msg := 'NO EXISTE LA TABLA '; -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; WHEN NoexisteCampo THEN HayError := true; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; err_msg := 'NO EXISTE EL CAMPO ' || campo || ' EN LA TABLA'; -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; WHEN OTHERS THEN HayError := true; --err_msg := SUBSTR(SQLERRM, 1, 200); ROLLBACK; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; --err_code := SQLCODE; err_msg := SUBSTR(SQLERRM, 1, 200); -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; END; END LOOP; END IF; IF cursor_clientes_lopd.sw_pasado = 'S' THEN FOR cursor_clientes_tabla IN (SELECT id_tabla, tabla, filtro, owner FROM LOPD_CLIENTES_TABLAS WHERE id_tabla NOT IN (25,26) AND f_alta_tabla > cursor_clientes_lopd.f_solicitud) LOOP SELECT COUNT(*)INTO A FROM ALL_TABLES WHERE TABLE_NAME=cursor_clientes_tabla.tabla AND OWNER= cursor_clientes_tabla.owner; -- Si no existen datos IF A = 0 THEN RAISE NoexisteTabla; END IF; --Inicializamos la query para el siguiente cliente lv_query := NULL; lv_query := lv_query || ' UPDATE '; lv_query := lv_query || cursor_clientes_tabla.tabla || ' A SET '; lv_query_where := ' WHERE '; FOR cursor_clientes_campos IN (SELECT nombre_campo, valor_campo, sw_fijo FROM LOPD_CLIENTES_CAMPOS_TABLA WHERE id_tabla = cursor_clientes_tabla.id_tabla) LOOP campo := cursor_clientes_campos.nombre_campo; SELECT COUNT(*) INTO B FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=cursor_clientes_tabla.tabla AND COLUMN_NAME= cursor_clientes_campos.nombre_campo AND OWNER= cursor_clientes_tabla.owner; -- Si no existen datos IF B = 0 THEN RAISE NoexisteCampo; END IF; IF (cursor_clientes_campos.sw_fijo = 'S') THEN IF(cursor_clientes_campos.valor_campo = 'NULO') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || ' = NULL,'; ELSIF(cursor_clientes_campos.valor_campo = 'DOCUMENTO') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= ''LOPD-' || cursor_clientes_lopd.id_cliente || ''','; ELSIF (cursor_clientes_campos.valor_campo= 'FECHA') THEN lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= TO_DATE(''01/01/''||TO_CHAR(A.'||cursor_clientes_campos.nombre_campo||',''YYYY''),''DD/MM/YYYY'')'|| ' ,'; --lv_query := lv_query || cursor_clientes_campos.nombre_campo || '= ''01/01/''||TO_CHAR(A.'||cursor_clientes_campos.nombre_campo||',''YYYY'')'|| ' ,'; ELSE lv_query := lv_query || cursor_clientes_campos.nombre_campo || '=' || cursor_clientes_campos.valor_campo || ','; END IF; ELSE -- sw_fijo = N SELECT data_type, data_length, data_precision INTO v_data_type, v_data_length, v_data_precision FROM all_tab_columns WHERE table_name = cursor_clientes_tabla.tabla AND column_name = cursor_clientes_campos.nombre_campo; IF (cursor_clientes_campos.valor_campo = 'NULO') THEN aux := 'NULL'; ELSIF (cursor_clientes_campos.valor_campo = 'DOCUMENTO') THEN aux := 'LOPD-' || cursor_clientes_lopd.id_cliente||''''; ELSE aux := cursor_clientes_campos.valor_campo; END IF; IF v_data_type = 'VARCHAR2' THEN FOR i IN 1..v_data_length-1 LOOP cursor_clientes_campos.valor_campo := cursor_clientes_campos.valor_campo || aux; END LOOP; lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ''' || cursor_clientes_campos.valor_campo || ''','; ELSIF v_data_type = 'NUMBER' THEN FOR i IN 1..v_data_precision - 1 LOOP cursor_clientes_campos.valor_campo := cursor_clientes_campos.valor_campo || aux; END LOOP; lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ' || cursor_clientes_campos.valor_campo || ','; ELSE -- el tipo no es ni varchar ni number lv_query := lv_query ||cursor_clientes_campos.nombre_campo || ' = ' || cursor_clientes_campos.valor_campo || ','; END IF; END IF; END LOOP; -- Modificamos la variable lv_query para eliminar la última coma longitud := LENGTH(lv_query); lv_query := SUBSTR(lv_query,1,longitud-1); -- Añadimos la parte del filtro lv_query := lv_query || lv_query_where; nuevo_filtro_aux := cursor_clientes_tabla.filtro; filtro_nombre:=''; FOR i IN 1..5 LOOP pos_almohadilla := INSTR(nuevo_filtro_aux,'#@'); pos_almohadilla1:= INSTR(nuevo_filtro_aux,'@#'); campo_nombre:=SUBSTR(nuevo_filtro_aux,pos_almohadilla+2,pos_almohadilla1-pos_almohadilla-2); IF (campo_nombre='ID_CLIENTE') THEN -- Modificamos el campo id_cliente longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.id_cliente); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.id_cliente ||'''' || SUBSTR(cursor_clientes_tabla.filtro,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='NOMBRE') THEN -- Modificamos el campo nombre filtro_nombre:='S'; longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.nombre); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.nombre ||'''' || SUBSTR(cursor_clientes_tabla.filtro,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='PRIMER_APELLIDO') THEN -- Modificamos el campo primer_apellido longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.primer_apellido); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.primer_apellido ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='SEGUNDO_APELLIDO') THEN -- Modificamos el campo segundo_apellido longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.segundo_apellido); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.segundo_apellido ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); ELSIF (campo_nombre='NUMERO_DOC_ACRED') THEN-- Modificamos el campo numero_doc_acred longitud := pos_almohadilla + LENGTH(cursor_clientes_lopd.numero_doc_acred); nuevo_filtro_aux := SUBSTR(nuevo_filtro_aux,1,pos_almohadilla-1) ||''''|| cursor_clientes_lopd.numero_doc_acred ||'''' || SUBSTR(nuevo_filtro_aux,pos_almohadilla1+2,LENGTH(cursor_clientes_tabla.filtro)); END IF; END LOOP; lv_query := lv_query || nuevo_filtro_aux ; declare NoexisteTabla EXCEPTION; NoexisteCampo EXCEPTION; BEGIN --DBMS_OUTPUT.PUT_LINE ('Inicio: '||TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS')); prueba:= SUBSTR(cursor_clientes_lopd.nombre,1,1); IF (filtro_nombre='S' AND prueba ='*' ) THEN DBMS_OUTPUT.PUT_LINE ('No se actualiza por filtro ***'); ELSE EXECUTE IMMEDIATE lv_query; END IF; EXECUTE IMMEDIATE lv_query; --DBMS_OUTPUT.PUT_LINE ('Final: '||TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS')); COMMIT; EXCEPTION WHEN NoexisteTabla THEN HayError := true; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; err_msg := 'NO EXISTE LA TABLA '; -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; WHEN NoexisteCampo THEN HayError := true; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; err_msg := 'NO EXISTE EL CAMPO ' || campo || ' EN LA TABLA'; -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; WHEN OTHERS THEN HayError := true; --err_msg := SUBSTR(SQLERRM, 1, 200); ROLLBACK; -- Generamos nuevo valor para id_error SELECT LOPD_CLIENTES_ERRORES_SQ.NEXTVAL INTO v_id_error FROM dual; --err_code := SQLCODE; err_msg := SUBSTR(SQLERRM, 1, 200); -- Insertamos nuevo registro en la tabla lopd_clientes_errores INSERT INTO LOPD_CLIENTES_ERRORES VALUES (v_id_error,--IRIA VALOR DE SECUENCIA cursor_clientes_lopd.id_cliente, cursor_clientes_tabla.tabla, err_msg, SYSDATE); COMMIT; END; END LOOP; END IF; --También, al terminar el bucle de actualización de cada cliente, --hay que informar el campo adecuado de fecha de cancelación en LOPD_CLIENTES --(se coge la fecha de ejecución IF cursor_clientes_lopd.sw_pasado<>'S' THEN UPDATE LOPD_CLIENTES SET f_cancelacion_1 = SYSDATE WHERE id_cliente = cursor_clientes_lopd.id_cliente; ELSE UPDATE LOPD_CLIENTES SET f_cancelacion_n = SYSDATE WHERE id_cliente = cursor_clientes_lopd.id_cliente; END IF; END LOOP; -- Una vez que ya se han tratado todos los registros de la tabla lopd_clientes actualizar_lopd_clientes; --fin proceso log v_sqlerrm := 'OK'; Prc_Dwge0025('N',ww_id_proceso_batch,ww_num_paso,ww_cont_leidos,ww_cont_escritos,ww_cont_borrados,ww_cont_actualizados,v_sqlerrm); COMMIT; /*EXCEPTION WHEN OTHERS THEN ROLLBACK; v_sqlerrm := SUBSTR(SQLERRM,1,100); Prc_Dwge0025('N',ww_id_proceso_batch,ww_num_paso,ww_cont_leidos,ww_cont_escritos,ww_cont_borrados,ww_cont_actualizados,v_sqlerrm); --RAISE_APPLICATION_ERROR(-20001,SQLERRM);*/ END prc_act_datos_personales_lopd; END Pck_Clientes_Lopd_005; /