Stored Procedure ile Function arasındaki farklar nelerdir?

 

  • Function Select içerisinde kullanılır ama Procedure ün böyle bir zorunluluğu yoktur. Procedure tek başına kullanılabilir.
  • Procedure geriye tablo döndürür, Function geriye mutlaka değer döndürür(tablo da olabilir)
  • Function ı, eğer owner üzerinde kayıtlı ise, dbo. dedikten sonra çağırırsınız ama Procedure u sadece adını yazarak çağırabilirsiniz
By mert

Function

Functionlar parametre alıp geriye bir değer veya tablo döndüren kurallardır. Bizim oluşturduklarımız User Defined Function diye geçer ama max,avg, gibi fonsiyonlar ise System Function lardır. Function’lar

  • Select içerisinde kullanırlar. Örneğin “Count(*), Sum, Max, Avg vs” fonksiyonları tek başına kullanamazsınız.
  • Uygulamalarda çağırılabilirler
  • Bir başka fonksiyon içerisinde çağırılabilirler
  • Check Constrait gibi kullanılabilirler
  • Stored Procedure yerine kullanabilirler

Function Oluşturma


Create Function TekMiCiftMi(@deger int)

returns bit–(bit yerine Table yazarsanız geriye tablo döndürür)

as

begin

declare @donen bit

if(@deger % 2 = 0)

set @donen=0

else

set @donen=1

return @donen

end

Function Kullanımı

Select dbo.TekMiCiftMi(5) as Sonuc

Function Düzenleme

Alter Function TekMiCiftMi

Function Silme

Drop Function TekMiCiftMi
By mert

Stored Procedure

Stored Procedure’ler database server üzerinde saklanan SQL cümlecikleridir. Parametreler alabilirler ve size sonuçlar döndürebilirler. Avantajları arasında DB server üzerinde olmasından dolayı daha hızlı çalışmaları, sadece ilk çalışmalarında derlenmeleri sonraki çalışmalarda derlenmemeleri (bu da neden hızlı olduğunu açıklıyor) SQL cümlecikleri ve programlama dilleri ile yazdığımız kodları birbirinden ayrıştırmamızı sağlaması sayılabilir.

Store Procedure  veritabanı üzerinde saklanan yordamlardır.  Yordamlar dışarıdan parametre alabilir ve geriye veri veya bilgi gönderebilirler.

Fonksiyon yazmamızın bir nedeni, yazılan kodun birden fazla kez kullanımını sağlamaktır. Bir kere yazdıktan sonra derlenir ve istediğimiz kadar çağırabiliriz.

Store Procedure’de isimlendirme yapılırken genellikle spProsedürAdı şeklinde yapılması, okunabilirliği arttırır.

Begin-End arasında kalan yer kapsam anlamına gelir. Buradaki anlamı Procedure içindeki kapsamı gösteriyor. Aynı şekilde While döngüsü, If koşulu  kullanmak istediğimizde Begin – End ile kapsamı belirtebiliriz.

Çalıştırma yaparken ise EXEC ProsedürAdı veya EXECUTE  ProsedürAdı komutlarını kullanarak yapabiliriz.

CREATE PROCEDURE UrunleriGetir @CategoryID int AS BEGIN

SELECT * FROM

Production.Product P WHERE P.ProductCategoryID = @CategoryID

END

EXEC UrunleriGetir @CategoryID = 1

Yukarıda  ürünleri ekrana getirmek amaçlı bir prosedür oluşturmuş olduk. Tanıttığımız parametrenin değeri Product tablosundaki ProductCategoryID’ ye eşit olursa bize o siparişin  tüm bilgilerini gösterecektir.

Parametre, SQL kodunuzdaki değişkenlerin atanmasında kullanılır. Kullanımı zorunlu değildir, ama programcının işini çok kolaylaştırır. Parametre alan bir fonksiyon yazmak istediğimizde ise prosedür adından sonra parantez içinde parametreleri veririz. Fakat parametre verirken @ işaretini kullanılır. Ayrıca parametrelere varsayılan değerde atama yapılabilir.

Geriye değer döndüren prosedürlerde out veya output kullanılır. Bu kelimeleri kullanarak, hangi parametrenin değer döndürdüğünü SQL SERVER’a tanıtırız.

SQL SERVER içinde değişken tanımlamak için DECLARE anahtar kelimesini kullanılır.

Stored Procedure’ler şu faydaları sağlar:

1. Uygulamanın getirdiği bazı iş kuralları prosedür içinde tanımlanabilir. Bir kez oluştuktan sonra bu kurallar birden çok uygulama tarafından kullanılarak daha tutarlı bir veri yönetimi sağlanır. Ayrıca bir fonksiyonelliğin değişmesi ihtiyacı doğduğunda her uygulama için değişiklik yapmak yerine, sadece bir platformda değişiklik yapılır.

2. Tüm prosedürler üstün performansla çalışır ancak birden fazla çalıştırılacak olan prosedürler sorgulama planları procedure cache içinde saklandığından daha da hızlı çalışırlar.

3. Stored Procedure’ ler SQL Server start ettikten sonra otomatik olarak çalıştırılmak üzere ayarlanabilirler.

4. Stored Procedure’ ler harici olarak kullanılırlar. Uygulama tarafından çağrılmak zorundadırlar. Otomatik devreye giremezler.

5. Stored Procedure’ lerın içinde SQL sorgulama diline ek olarak T-SQL komutlarını kullanabiliriz.

6. Kullanıcının bir tabloya erişim izni olmasa bile o tablo üzerinde işlem yapan bir stored procedure’ ü kullanma izni olabilir.

By mert

SQL Server String Fonksiyonları

 

ASCII()
Verilen string ifadenin ASCII kodunu verir.
Kullanım Şekli – ASCII(String Değer)
Örnek: SELECT ASCII ('A')

CHAR()
Verilen sayısal ASCII kodunu karaktere çevirir.
Kullanım Şekli – CHAR(Integer Değer)
Örnek: SELECT CHAR(65)

CHARINDEX()
Cümle içinde aranan kelimenin kaçıncı harften başladığının indexini verir.
Kullanım Şekli – CHARINDEX(Aranacak kelime, cümle)
Örnek: SELECT CHARINDEX('mert', 'Merhaba Dünya')

DIFFERENCE()
İki String değer arasındaki farkın kaçıncı karakterden başladığını gösterir.
Kullanım Şekli – DIFFERENCE(stringdeger1, stringdeger2)
Örnek: SELECT DIFFERENCE('Mert', 'Mrt')

LEFT()
String değerin soldan kaç karakter alacağını söyler.
Kullanım Şekli – LEFT(string ifade, int kaç değer alacağı)
Örnek: SELECT LEFT('abcdefg', '2')

LEN()
String ifadenin uzunluk değerini Integer olarak verir.
Kullanım Şekli – LEN(String ifade)
Örnek: LEN(Mert

LOWER()
String ifadelerim tüm harflerini küçüğe çevirir.
Kullanım Şekli – LOWER(String ifade)
Örnek: SELECT LOWER('Mert')

LTRIM()
String ifadede soldaki boşlukları siler ve düzenler.
Kullanım Şekli –LTRIM(String ifade)
Örnek: SELECT LTRIM('         Mert'

NCHAR()
Çok büyük değerdeki ASCII karekter değerlerini verir.
Kullanım Şekli – NCHAR(int değer)
Örnek: SELECT NCHAR(985)

PATINDEX()
Cümlenin içindeki aranılan harfin kaçıncı indexten başladığını gösterir.
Kullanım Şekli – PATINDEX(aranılacak string, cümle)
Örnek: SELECT PATINDEX ('rt' , 'Mert Kaya')

QUOTENAME()
Cümle içinde özel karakterleri ayırmak için kullanılır.
Kullanım Şekli – QUOTENAME(string ifade)
Örnek: SELECT QUOTENAME('abc[]def')

REPLACE()
Cümle içinde değişecek kelimelerin yerini değiştirir.
Kullanım Şekli – REPLACE(cümle, değişecek cümle, yerine yazılacak cümle)
Örnek: SELECT REPLACE('abcdefghijkcde', 'cde', 'xxx');

REPLICATE()
Verilen String ifadenin kaç kere tekrar edileceğini gösterir.
Kullanım Şekli – REPLICATE(string değer, int tekrar değeri)
Örnek: SELECT REPLICATE('Mert     ', 4)

REVERSE()
Verilen kelime ya da cümleyi tersten yazar.
Kullanım Şekli – REVERSE(string cümle)
Örnek: SELECT REVERSE('Mert Kaya')

RIGHT()
Cümle içinde sağdan kaç harf alacağını gösterir.
Kullanım Şekli – RIGHT(string cümle, int değer)
Örnek: SELECT RIGHT('Mert Kaya', 5) 

RTRIM()
Cümle içinde sağdaki boşlukları siler.
Kullanım Şekli – RTRIM(string ifade)
Örnek: SELECT RTRIM('Mert Kaya                    ')

SOUNDEX()
String değeri Alfanümerik olarak dönüştürür.
Kullanım Şekli – SOUNDEX(String değer)
Örnek: SELECT SOUNDEX ('Mert') 

SPACE()
Cümle içerisinde ne kadar boşluk bırakılacağını gösterir.
Kullanım Şekli – SPACE(int değer)
Örnek: SELECT 'MERT' + SPACE (2) + 'KAYA'

STR()
Decimal ifadeleri kaçıncı karaktere yuvarlayacağını gösterir.
Kullanım Şekli – STR(Decimal değer, kaç değer olduğu, virgülden sonra kaç değer yuvarlayacağı)
Örnek: SELECT STR(123.456, 6 , 2) 

STUFF()
Cümlenin içine kelime eklemek için kullanılır.
Kullanım Şekli – STUFF(String cümle, başlangıç değer, silinecek değer, eklenecek string)
Örnek: SELECT STUFF ('Mert Asya', 3, 5, 'rt KA')

SUBSTRING()
Cümle içerisinden parça almak için kullanılır.
Kullanım Şekli – SUBSTRING(cümle, başlangıç, int, alınacak değer int) 
Örnek: SELECT SUBSTRING ('abcdefgh', 2, 3) 

UNICODE()
ASCII kodunu verir.
Kullanım Şekli – UNICODE(Char değer)
Örnek: SELECT UNICODE ('A') 

UPPER()
Verilen kelime veya cümleyi büyük harfe çevirir.
Kullanıum Şekli – UPPER(String değer)
Örnek: SELECT UPPER('mert kaya') 

By mert

SQL Server Tarih Fonksiyonları

Merhaba arkadaşlar, bu yazıda sizlere SQL Server Tarih fonksiyonlarını anlatacağım.

SQL Server’da sistem tarihini almak için GETDATE() fonksiyonunu kullanırız.

GETDATE()

SELECT GETDATE()

Yukarıdaki sorgu bize, SQL Server’ın kurulu olduğu Server’ın sistem tarihini görüntüler.

* 2011-12-12 11:43:23.556

YEAR()

SELECT YEAR(GETDATE())

Yukarıdaki sorgu bize, dönecek olan tarihin yıl bilgisini gösterir.

* 2011

MONTH()
SELECT MONTH (GETDATE())

Yukarıdaki sorgu sistem tarihinin ay bilgisini gösterir. Month fonksiyonu bizden tarih değeri olan bir değişken ya da kolon adı ister.

* 12

DAY()

SELECT DAY (GETDATE())

SELECT DAY (DogumTarihi) as [Personelin Doğduğu Gün] FROM Personeller WHERE ID=1

Yukarıdaki sorgu data tipi date olan bir kolonun ya da değişkenin sadece gün bilgisini gösterir. DAY fonksiyonu bizden parantezler içinde tarih tipinden bir değişken ya da kolon adı istiyor.

* 20

By mert

Anders Hejlsberg Kimdir?

Danirmarka’lı bir bilgisayar mühendisi. Borland‘ın ilk çalışanlarından, Turbo Pascal‘ı yazan kişi. Sonlarını Delphi ürün hattının baş mimarı olarak çalıştı. On sene kadar önce Microsoft tarafından 3 milyon dolara transfer edildi. Microsft’ta Visual J++ ve Windows Foundation Classes‘i geliştirmede önemli rol oynadı. Ardından COM+ ve VS.Net Framework ekibinin başında çalıştı. C# dilini tasarladı ve derleyicisini yazdı.

By mert