September 11
i numeri non validi nelle tabelle Oracle possono essere frustrante e causare ben formato codice a comportarsi in modi inattesi e indesiderati, causando l'errore di Oracle ORA-01722. L'errore numero non valido in Oracle si pone, talvolta in modo apparentemente casuale, quando il codice SQL è scritto che utilizza una colonna carattere a base per le operazioni matematiche e si incontra un carattere non numerico.
A peggiorare le cose, questo errore non si verifica sempre, anche se le condizioni per esso sono soddisfatti. Ciò è dovuto principalmente al modo in cui una tabella viene percorso quando viene sottoposto a scansione per la corrispondenza dei dati.
1 Creare una tabella con le colonne correttamente definite. Per esempio:
CREATE TABLE numbers_and_words
(Number_col AS numero,
word_col AS VARCHAR2 (100))
2 Programmare l'applicazione di inserire solo i dati numerici nei dati della colonna number_col e carattere nella colonna word_col.
3 Creare una condizione di controllo nell'applicazione che assicura i dati numerici non viene passato alla colonna number_col. Oracle permetterà la rappresentazione carattere di un numero da memorizzare in una colonna di caratteri.
4 Scrivere una funzione per la cattura di dati non numerici. Un esempio:
CREATE FUNCTION is_numeric (str IN VARCHAR2)
NUMERO DI RITORNO
È
num NUMERO;
INIZIO
num: = TO_NUMBER (str);
RITORNO 1;
ECCEZIONE
QUANDO ALTRI ALLORA
RETURN 0;
FINE;
5 Scrivi una vista che utilizza la funzione di creare una rappresentazione della tabella senza dati non numerici. Supponendo che il nome della tabella è t1 e la colonna con i dati mista è chiamata "mixed_col", un solo numerico vista potrebbe essere scritta come segue:
CREATE VIEW numbersonly AS
SELEZIONE mixed_col da T1
DOVE is_numeric (mixed_col) = 1
6 Utilizzare la vista numbersonly nelle query che hanno bisogno di fare operazioni numeriche basate sulla colonna. Per esempio:
SELECT * FROM numbersonly
DOVE mixed_col> 35