Knowledge Base

¿Qué es esto?

Oracle: PL/SQL: Saber si una columna en una tabla tiene algún registro no numérico

12/03/2008 - 11/03/2019 -  Comentarios - Oracle PL/SQL

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;