Invalid number dikarenakan di dalam table yang kita mau select terdapat karekter,contoh table tb_test dengan isi kolom seperti berikut :
col_1 | col_2 |
1 | 22 |
2 | ACEP |
3 | 23 |
4 | YUDI |
5 | 24 |
6 | HOLIL |
7 | 25 |
8 | YANTO |
9 | 26 |
10 | FAJAR |
11 | 27 |
12 | ERZAN |
Jika melakukan proses select seperti berikut ini, anda akan pendapatkan pesan error ORA-01722: invalid number, karena di dalam kolom_2 terdapat String atau karakter
contoh select statement, untuk menampilkan col2 yang nilainya lebih dari 22
select * from test where col2 > 22
setelah di lakukan proses select pasti akan muncul ORA-01722: invalid number.
untuk mengatasinya masalah ini kita akan membyat function contohnya di sini kita akan membuat function ToNumeric, agar string atau karakternya tidak perlu di baca
contoh membuat function ToNumeric, codenya seperti berikut ini :
create or replace function tonumeric(v in varchar2) return number as — return value if its numeric — 0 non numeric num number; begin num := to_number(v); return num; exception when others then return null; end;
Untuk memanggil fungsinya di select cukup dengan menambahkan code berikut ini saat proses wherenya :
select * from test where tonumeric(col2) >22
maka akan hasil yang akan tampil seperti berikut ini :
col_1 | col_2 |
1 | 22 |
3 | 23 |
5 | 24 |
7 | 25 |
9 | 26 |
11 | 27 |