SQL Fonksiyonu Yazmak

by Yusuf Karatoprak 11. Aralık 2008 04:23

 

Bu yazımda   Sql fonksiyonlarını önemini ve nasılyazılacağını anlatmaya çalışacağım. Önce şöyle başlayalım; bunun için şöyle birörnek düşünelim: bir tekstil firmasına ait sql tablosu olsun. Bu firmanıngömlek satışlarını gösteren bir kolon da kdvsiz fiyat diğer kolon ise kdvlifiyat ( 1.15* kdvsizfiyatkolonu ) olsun, bunu yapmak iki satırlık bilgi için kolay ama 1000 satırlık kolon için çok zor bir işlemdir . bunu sqlbilgisine sahip bir şöyle yapar:

 

Select (kdvsizfiyat* 1.15)  as   kdvlifiyat from tablo

 

Ama ben bunufonsiyonlar ile nasıl yapılacağını da anlamak ilerde doğabilecek karışıkdurumları anlamakta kolaylık sağlayacaktır.

 

Şöyle bir tabloyapalım:

 

 

 

Amacım;Veritabanımda müşteri tipini gösteren kolonun içeriğini değiştirmek E ise Erkekve K ise Kadın yazsın; Birde stok adedini brim fiyatı ile çarpsın yeni birkolona eklesin. Peki bunun yararı nedir? Şöyle düşünün bu değerlerin tek selectifadesinde çekilmesi mi?, hesaplanıp yazılması mı? yoksa gerektiği zamançekilmesi mi mantıklıdır?  Bence sondurum biraz daha baskın? Neden veritabanı  arada sırada ihtiyaç duyacacağım bilgilerle sürekli doldurayım? İhtiyaç duydugumda çağırırım. Gerekli işlemleri yaparım. Kullanıcıya yansıtırım.

Bu sayede veri tabanıda şişmez!

 

 

Şöyle bir sqlQuery yazalım:

 

Create PROCEDURE [dbo].[sp_GetAllProducts]

(

@parameter int

)

AS

if(@parameter=0)

begin

select dbo.func_ReWriteCustomerType(CustomerType) as CustomerType ,

Product,ProductCount,ProductPrice,dbo.func_ProductFunction(ProductCount,ProductPrice)as Total

from dbo.Products

end

 else

select dbo.func_ReWriteCustomerType(CustomerType) as CustomerType ,

Product,ProductCount,ProductPrice,dbo.func_ProductFunction(ProductCount,ProductPrice) as Total

from dbo.Products  where ProductType=@parameter

return

 

Şimdi yukarıdakikırmızı yazı ile yazılan dbo. İle başlayan fonksiyonlar sql fonksiyonlarıdır.Bunların içeriğini görelim:

 

Create  FUNCTION[dbo].[func_ProductFunction] (@productprice int,@productcount int)

RETURNS int  -- int deger dönecek

AS

BEGIN

declare @Return int

select @Return = @productprice*@productcount-- gönderilen iki deger çarpılıp int olarakdönecektir.

 

return @Return

end

 

Create  FUNCTION[dbo].[func_ReWriteCustomerType](@customertype nvarchar(5))

RETURNS varchar(5)  -- varchar degeri dönecek

AS

BEGIN

declare @return varchar(5)

select @return = case @customertype

when 'E' then 'Erkek Reyonu'  -- E gelirse Erkek Reyonu değeri döner

when 'K' then 'Kadın Reyonu'  -- K gelirse Kadın Reyonu olacaktır.

 

else 'Unknown'

end

return @return

endŞimdi sonuçları görelim: 

 

 
Bu makalede sql fonksiyonları ile tanıştık.Anlaşılmayan bir şey olursa temel sql query leri çalışıp tekrar okumanızıtavsiye ederim.
 
Yazar : Yusuf KARATOPRAK 
 
 

Tags:

SQL Server

Yorumlar

09.10.2009 20:05:43 #

Selim

Teşekkürler.

Selim Turkey | Reply

Yorum ekle




  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading



Son Yorumlar

Comment RSS

INETA User Group

Yazılım