Etiket arşivi: plsql regular expression

Plsql ile Mail Adresi Dogrulama

Plsql ile Mail Adresi Dogrulama

Kullanıcının girdiği mail adresinin bir mail adresi formatında yazılıp yazılmadığını
plsql ile kontrol edelim, bunu yaparken regular expression(düzenli ifadeler) kullanacağız..

SELECT REGEXP_INSTR('&mail_Adresi','^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$') FROM dual ;

Yukarıdaki sql ile verilen mail adresi uygunsa 1, değilse 0 sonucu alabiliriz,ama bunu mail geçen
her yerde yazmaktansa, fonksiyon yazıp bu fonksiyonu çağırırsak işimiz daha kolaylaşır.

Mail Adresi Dogrulama Fonksiyonu..

CREATE OR REPLACE FUNCTION MAIL_DOGRULA(MAIL_ADRESI_ IN VARCHAR2)
  RETURN NUMBER AS
  A NUMBER;
BEGIN
  SELECT REGEXP_INSTR(MAIL_ADRESI_,'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$')
    INTO A
    FROM DUAL;
  IF A = 1 THEN
    RETURN 1;
  ELSE
    RETURN 0;
  END IF;
END MAIL_DOGRULA;

Kullanımı:

SELECT MAIL_DOGRULA('omer@omeracar.com.tr') FROM DUAL;
1
IF MAIL_DOGRULA(customer_mail_)=1 then 
...............
ELSE
...............
END IF;

Umarım faydalı olur..

PLSQL Is Number Fonksiyonu

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..