PLSQL’de Sayı Kontrolü
Bazen numerik veri kontrolü yaptırmamız gerekebilir,bu kontrolü farklı yöntemlerle yapmak mümkün.Biz regular expression’la ve to_number dönüşümüyle ayrı ayrı yapalım..
CREATE OR REPLACE FUNCTION is_number( value_ IN VARCHAR2 )
RETURN VARCHAR2
IS
num_ NUMBER;
BEGIN
num_ := to_number(value_);
RETURN 'Y';
EXCEPTION
WHEN others THEN
RETURN 'N';
END is_number;
Verilen stringin numerik olup olmadığını Y ya da N olarak döndürür.
Kullanımı:
SQL> Select is_number('23423') from dual;
Y
SQL> Select is_number('adsfd') from dual;
N
IF is_number(value_)='N' Then
Raise_application_error(-20001,'Lutfen gecerli bir sayı giriniz');
END IF;
Regular Expression ile Sayı Kontrolü
CREATE OR REPLACE FUNCTION is_number_regex(value_ IN VARCHAR2)
RETURN NUMBER IS
BEGIN
RETURN CASE regexp_like(value_,'^[+-]?[0-9]*.?[0-9]+$')
WHEN TRUE THEN 1
ELSE 0
END;
END is_number_regex;
Fonksiyonlarda 1-0 ya da Y-N olarak sonuç döndürdük, ama isterseniz
boolean olarak TRUE-FALSE da döndürebilirsiniz..