Para hacerlo se puede crear esta función:
create or replace
function isnumeric
( p_string in varchar2, p_comptador in number)
return boolean
as
l_number number;
v_ErrorMsg VARCHAR2(4000);
begin
l_number := to_number(p_string);
return TRUE;
exception
when others then
v_ErrorMsg := sqlerrm;
insert into prova(camp1) values(p_string || ' ' || p_comptador || ' ' || v_ErrorMsg ||' excepcion NO NUMERICO');
return FALSE;
end;
/
Que se puede llamar con este bloque an?nimo de PL/SQL para hacer la comprobaci?n registro a registro:
BEGIN
DECLARE
CURSOR c_empleado IS
SELECT EMPLEADO FROM CONTROL_KILOMETROS_2 ORDER BY EMPLEADO DESC;
VALOR boolean;
v_Comptador number(10);
BEGIN
v_Comptador := 0;
FOR cr_empleado IN c_empleado LOOP
v_Comptador := v_Comptador + 1;
VALOR := isNumeric(cr_empleado.empleado, v_Comptador);
END LOOP;
END;
END;
/
-- Si existen registros es que hab?an registros con el campo en cuesti?n que no eran num?ricos
SELECT * FROM PROVA;