Tecnología

Inicio

Cómo encontrar un número no válido en una tabla de Oracle

los números no válidos en las tablas de Oracle puede ser frustrante y causar así formada código para comportarse de maneras inesperadas e indeseables, que produce el error ORA-01722. El error número no válido en Oracle surge, a veces de una manera aparentemente aleatoria, cuando el código SQL está escrito que utiliza una columna basada en caracteres para las operaciones matemáticas y se encontró un carácter no numérico.

Para empeorar las cosas, este error no siempre se produce a pesar de que las condiciones para que se cumplan. Esto se debe principalmente a la forma de una mesa es atravesada cuando se escanea para hacer coincidir los datos.

Instrucciones

Evitar el error antes de que suceda

1 Crear una tabla con columnas adecuadamente definidos. Por ejemplo:

CREAR TABLA numbers_and_words

(Number_col número AS,

word_col AS varchar2 (100))

2 Programar la aplicación para colocar solamente los datos numéricos en los datos de la columna number_col y carácter en la columna de la word_col.

3 Crear una condición de verificación de la aplicación que asegura que los datos numéricos no se pasa a la columna de number_col. Oracle permitirá a la representación de caracteres de un número a ser almacenado en una columna de caracteres.

Trabajar alrededor de ella

4 Escribir una función para capturar los datos no numérico. Un ejemplo:

CREAR is_numeric FUNCIÓN (str EN VARCHAR2)

NÚMERO DE DEVOLUCIÓN

ES

NÚMERO num;

EMPEZAR

num: = TO_NUMBER (str);

RETURN 1;

EXCEPCIÓN

CUANDO OTROS ENTONCES

RETURN 0;

FIN;

5 Escribe una vista que utiliza la función para crear una representación de la mesa sin datos no numéricos. Suponiendo que el nombre de la tabla es t1 y la columna con los datos mixtos se llama "mixed_col," un sólo numérico vista se puede escribir de la siguiente manera:

CREATE VIEW numbersonly AS

mixed_col SELECT FROM t1

DONDE is_numeric (mixed_col) = 1

6 Utilice la vista numbersonly en las consultas que necesitan para hacer operaciones basadas en numéricos en la columna. Por ejemplo:

* SELECT numbersonly

DONDE mixed_col> 35

Consejos y advertencias

  • Definir las restricciones de comprobación detalladas sobre columnas para evitar la inserción de los datos no deseados en las tablas.