Giriş » Bilgisayar, Microsoft

Sql fonksiyonlar ile e-mail doğrulama

10 Aralık 2009 149 görüntüleme Yorum yok

Çoğu veritabanı yönetim sistemi fonksiyon kullanma olanağını sunar. Fonksiyonların saklı yordamlardan farkı bir toplu işlem ihtiva etmemeleridir. Onların ana maksadı başka yerlerde kullanılmak üzere değer döndürmektir. Aşağıdaki örnekte Ms Sql 2000’de formata uygun girilmemiş, veri girişi sırasında format kontrolü yapılmamış email adreslerini tespit etmeye yönelik kullanıcı tanımlı sql fonksiyonunun kullanımı esas alınmıştır.

Email adresi doğrulamalarında regular expression denilen ifadeler kullanılır. Regular expression demek e-mail adresinin maketi ya da formatı demektir. Sql 2000 regular expression desteği vermediğinden vbscript desteğinden faydalanacağız.

Regular expression kontrolü ile ilgili ana fonksiyonumuz:

CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000),
@regexp varchar(1000),
@ignorecase bit = 0
)
RETURNS bit
AS
BEGIN
DECLARE @hr integer
DECLARE @objRegExp integer
DECLARE @objMatches integer
DECLARE @objMatch integer
DECLARE @count integer
DECLARE @results bit
EXEC @hr = sp_OACreate ‘VBScript.RegExp’, @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, ‘Pattern’, @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, ‘Global’, false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, ‘IgnoreCase’, @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OAMethod @objRegExp, ‘Test’, @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END

Bu fonksiyon kontrolde kullanacağımız regular expression’ı, regular expression uyumunun arandığı metni girdi olarak kabul etmekte ve metin regular expression yapısında ise 1 döndürmektedir.

CREATE FUNCTION dbo.udf_ValidEmail  –email format uyumunu kontrol eden fonksiyon
(
– Add the parameters for the function here
@email nvarchar(50) –50 karakter uzunluğunda email kontrol edilebilir
)
returns bit
AS
BEGIN
declare @validEmail bit
– Declare the return variable here
DECLARE @regularexpression nvarchar(250);
set @regularexpression = ‘^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$’

– Add the T-SQL statements to compute the return value here
set @validEmail = dbo.find_regular_expression(@email,@regularexpression,0)

– Return the result of the function
return @validEmail

END
GO

select dbo.udf_ValidEmail(‘ahmet@yahoog.com.tr’)

Sql’in kullanıcıya sağladığı fonksiyon tanımlama olanağı sayesinde sistem fonksiyonlarda yer almayan ve sık kullandığımız fonksiyonları yazma olanağına sahibiz.

Mesela;

  • Girilen metni belirtilen karaktere göre split eden fonksiyon yazılabilir.
  • Sorgu sonucundaki parasal değeri Türk formatında (x.xxx.xx tl) şeklinde formatlayarak gösterecek fonksiyon yazılabilir
  • Kg değerini 1000’e bölerek tona çevirecek fonksiyon yazılabilir.
  • vb, vb..

Kaynaklar:

En son 5 Temmuz 2010 tarihinde değiştirildi.
1 yıldız2 yıldız3 yıldız4 yıldız5 yıldız (3 oy, vasat: 4,67 / 5)
Loading ... Loading ...

Yorum yapmak ister misiniz!

Yorumunuzu aşağıya ekleyin, ya da sitenizden trackback verin. Yorumları RSS üzerinden de takip edebilirsiniz.

Çorbada benim de tuzum olsun derseniz spam içermeyen, anlaşılır ve güzel Türkçemiz ile yazılmış yorumlarınız başımız üstüne. Ama lütfen konuyla ilgili olsun.

Aşağıdaki etiketleri kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Gravatar desteğimiz vardır. Bütün sitelerdeki yorumlarınızı imzalamak için, Gravatar sitesine üye olabilirsiniz.