DatabaseOracle

Solusi mengatasi ORA-01722: invalid number di Oracle

261
oracle database plsql
oracle database plsql

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

 

 

Exit mobile version