![]() |
| |||||||
| Programlama Delphi,Visual Basic,C/C++,Pascal,Python,Kylix,Lazarus,Glade,Perl,Mono vb yazılımlar hakkında döküman paylaşabileceğiniz ve soru sorabileceğiniz forum alanızımıdır. |
| Tags: makale, server, sql |
![]() |
| | LinkBack | Konu Araçları |
| | #1 (permalink) | |||||||||||||
| Bu Alana Reklam Vermek İstiyorsanız Buraya Tıklayınız Daha önceki iki yazımızda SQL Server içinde yer alan hazır fonksiyonlar ve sistem fonksiyonlarından bahsetmiştik. Bu yazımızda ise konumuz kendi fonksiyonlarımızı yaratmak ve bunları sorgularımızda kullanmak üzerine. Fonksiyonlar Stored Procudure ler gibi SQL Server üzerinde barındırılan, unique isim taşıması gereken yapılardır. Stored Procedure ler gibi dışarıdan "exec" vb bir komutla çalıştırılmazlar. Uygulama içinden kullanmak ve return değerini kullanmak gerekir. Bir fonksiyon oluşturabilmek için gerekli syntax yapısı; Kod: CREATE FUNCTION ( , ) RETURNS AS Yapıya baktığımızda stored procedure de olduğu gibi bir DDL statement olan "Create" ifadesini kullandığımızı, hemen ardından fonksiyonumuz için bir isim belirlediğimizi ve ardından fonksiyonumuzun alacağı parametreleri ve veri tiplerini belirttiğimizi görüyoruz. Fonksiyonumuzun bir de return değeri var. Return ifadesinde bir değişken tanımlamıyor, sadece geri dönecek olan verinin tipini belirtiyoruz. Basit bir örnek vermemiz gerekirse; Kod: Create Function StringBirlestir(@Isim nVarChar(50), @SoyIsim nVarChar(50)) Returns nVarChar(100) BEGIN Declare @Sonuc nVarChar(100) Set @Sonuc = @Isim + ' ' + @SoyIsim Return @Sonuc END GO Yukarıdaki ifadeyi bir texte dökmek gerekirse; "StringBirlestir" isminde bir fonksiyon yaratıyoruz. Fonksiyonumuz "Isim" ve "Soyisim" adında nVarChar(50) tipinde parametre alıyor. Ve fonksiyonun çalışmasının ardından sonucumuzu NVarChar(100) tipinde geri döndürüyoruz. Begin..End blokları arasında ise fonksiyon işlevimizi tanımlıyoruz. Yani "Sonuc" adında bir değişken tanımlıyor. Bu değişkene parametre olarak aldığımız "Isim" ve "SoyIsim" değişkenlerinin değerlerini "+" ifadesiyle birleştirerek geri döndürüyoruz. Şimdi gerçek bir fonksiyon örneği yapalım ve bunu sorgularımızda nasıl kullanacağımızdan bahsedelim. ÖRNEK 1 : Örneğimizde oluşturacağımız fonksiyon "01012005" gibi bir formatta kaydedilmiş olan tarih ifadelerini "2005-01-01" gibi bir formata dönüştürsün. Bu iş için öncelikle bir tablo yaratalım ve "01012005" formatında tarihler girelim. Sonrada bunu parametre olarak alacak ve istdiğim formata çevirerek geri döndürecek olan fonksiyonumuzu yazalım. Kod: Create Function TarihFormatla(@Tarih nChar(10)) Returns DateTime BEGIN Declare @Sonuc DateTime Set @Sonuc = Convert(DateTime, SubString(@Tarih,5,4) + '-' + SubString(@Tarih,3,2) + '-' + SubString(@Tarih,1,2)) Return @Sonuc END GO Fonksiyonumuzu yarattık. Yukarıda da bahsettiğimiz gibi "ggaayyyy" formatındaki veriyi "yyyy-aa-gg" formatında geri döndürmesini sağladık. Şimdi hem çalışıp çalışmadığını görelim hemde uygulama içinden fonksiyonumuzu nasıl çağıracağımıza bakalım. Kod: Select ID, dbo.TarihFormatla(Tarih) from DEMO_TABLE ÖRNEK 2 : Şimdiki örneğimiz ise stringleri birleştirmek üzerine olsun. Isim, Nick ve Soyisim den oluşan 3 parametre alsın ve bunları "Evren aka 'Mania' Ayan" gibi bir formatta birleştirerek ekrana getirsin. Kod: Create Function Birlestir(@X nchar(10), @Y nchar(10), @Z nchar(10)) returns nchar(50) BEGIN Declare @Sonuc char(50) Set @Sonuc = @X + '" aka "' + @Y + ' ' + @Z Return @Sonuc END Şimdide bu fonksiyonumuzu kullanalım. Kod: Select ID, Isim, Nick, Soyisim, dbo.Birlestir(Isim, Nick, Soyisim) from DEMO_TABLE1
__________________ !!!FORUMDAKİ ONLİNE FİLMLERİ (DivX) NASIL İZLERİM!!![Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] ![]() [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] | |||||||||||||
| | |
| Konuyu Beğendin mi ? O Halde Konuyu Arkadaşınız ile Paylaşın =) |
| Okumuş Olduğunuz Sayfayı E-Mail ile Arkadaşınız ile Paylaşın ! |
![]() |
| Bookmarks |
| Şu an bu konuyu görüntüleyen kullanıcı sayısı: 1 (0 üye ve 1 misafir) | |
| Konu Araçları | |
| |