-
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.