Ugyldige tal i Oracle tabeller kan være frustrerende og forårsage velformede kode til at opføre sig i uventede og uønskede måder , hvilket resulterer i Oracle ORA- 01722 fejl. Den ugyldige tal fejl i Oracle opstår , nogle gange i en tilsyneladende tilfældig måde , når SQL-kode er skrevet , som bruger en tegnbaseret kolonnen for matematiske operationer og en ikke- numerisk tegn er stødt . For at gøre tingene værre, vil denne fejl forekommer ikke altid , selv om betingelserne for det er opfyldt. Dette skyldes primært den måde en tabel gennemløbes , når det bliver scannet for tilhørende data . Ting du skal
Oracle database
bord med VARCHAR2 kolonne
Information både numerisk og ikke- numerisk type i VARCHAR2 kolonne
Vis Flere Instruktioner
Undgå fejl Før det sker
1
Oprette en tabel med ordentligt defineret kolonner. For eksempel : Hej
CREATE TABLE numbers_and_words
( number_col AS nummer , salg
word_col AS varchar2 (100) )
2
Program ansøgningen til kun placere numeriske data i number_col kolonne og karakter data i word_col kolonne.
3
Opret en check tilstand i ansøgningen , der sikrer numeriske data ikke bliver videregivet til number_col kolonne. Oracle vil give karakter repræsentation af et tal , der skal lagres i et tegn kolonne.
Arbejde omkring det
4
Skriv en funktion til at fange ikke-numeriske data. Et eksempel : Hej
CREATE FUNCTION is_numeric ( str IN VARCHAR2 )
returnummer
ER
num nummer
BEGIN < br >
num : = TO_NUMBER ( str. ),
tilbagevenden 1;
UNDTAGELSE
NÅR andre, så
tilbagevenden 0;
< p > SLUT ,
5
Skriv en visning , der bruger funktionen til at skabe en repræsentation af bordet uden ikke-numeriske data. Antages det, at tabelnavnet er t1 og søjlen med den blandede data kaldes " mixed_col ", en numerisk visning, der kun kunne skrives som følger : Hej
Opret visning numbersonly AS
SELECT mixed_col FROM t1
WHERE is_numeric ( mixed_col ) = 1
6
Brug numbersonly visning i forespørgsler, der skal gøre numerisk -baserede operationer på søjlen. For eksempel : Hej
SELECT * FROM numbersonly
WHERE mixed_col > 35