Stored Procedure ve Fonsiyonlar arasındaki farklar

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Stored Procedure ve Fonsiyonlar arasındaki farklar

Mesaj gönderen unalaygun »

Açıkçası bir kaç madde biliyorum ama daha detaylı öğrenmek istiyorum

mesela

Stored procedurlerin derlenmiş olduğunu
Fonksiyonların derlenmemiş olduğunu

Fonksiyonların Sql cümlecikleri içinde çağrılabildiğini
Storedlerin kullanılamadığını

daha detaylı bilgi sahibi olan abilerim ablalarım yardımlarınızı bekliyorum .

Teşekürler.
derviş
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ben stored procedurleri belli bir kod yığınını biraraya toplamak için kullanıyorum. Yani belli tablolardan birşeyler okuyup bazı talolara yazma gibi. Eğer bir sorgu döndürüyorsa dediğin gibi bu sorguyu farklı cümleler içinde kullanamıyorsun

Ama bir değer veya bir tablo döndürmek ve bu döndürdüğüm değerleri başka cümlelerde de kullanmak istediğimde fonksiyon kullanıyorum.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Mrb; bahsedildiği gibi prosedür toplu işlemleri tek seferde yapabilmeye yarar. Mesela sipariş edilmiş bir malın satışı tamamlanınca ne olur? Önce Sipariş tablosundan silinir veya durumu değiştirilir, daha sonra Stok tablosundan sipariş edilen miktar düşülür veya çıkan miktar olarak ekleme yapılır ve belirtilen tutarda Fatura tablosuna kayıt eklenir. (Bu konularda tecrübesiz olduğum için örneğin gerçek hayatta uygulama derecesi nedir bilemem ama maksat bilgi akışı olsun). Tüm bu işlemi yapan SiparisTeslim adında bir prosedür yazılırsa ve bu prosedüre stok kodu, miktarı ve tutarı için 3 parametre yolu ile bilgi alacak yapıya sahip olması gerekir. Her neyse geçelim fonksiyona. Fonksiyonlar ise genelde sonucu itabari ile bir değer elde etmek için kullanılırlar. Mesela bir ay kaç gün çekiyor bunu bulmamız lazım. (select maastarihi, AyinGunu(maastarihi) from personel) şeklinde bir sorgu çekebilmemiz gerekiyor. Bu durumda AyinGunu isminde verilen tarihteki ayın kaç gün çektiğini bulan bir fonksiyon yazmak gerekecektir. Fonksiyonlarında işlevi budur. Kolay gele.

Kod: Tümünü seç

CREATE FUNCTION AyinGunu  (@Tarih datetime)
RETURNS int
AS
BEGIN
   DECLARE @Ay int
   DECLARE @Yil int
   SET @Ay=Month(@Tarih)
   SET @Yil=Year(@Tarih)
   IF (@Ay=2)  and  ((@Yil % 400=0) or ((@Yil % 100<>0) and (@Yil % 4=0))) SET @Ay=29
   ELSE SET @Ay=CASE WHEN @Ay=2 THEN 28 WHEN @Ay in (4,6,9,11) THEN 30 ELSE 31 END
   RETURN(@Ay)
END
Bu da örnek fonksiyonumuzun kodu :wink: .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Mesaj gönderen unalaygun »

ilgin için tşkler saban hocam kod vermişsin bende birşeyler eklemek istedim


bir ayın kaç çektiğini bulan daha kısa vesistem fonksiyonlarıyla yazdığım bir şey belki işine yarar diye yazıyorum

@Tarih='01'+@Ay+@Yil

datepart(dd,dateadd(dd,-1,dateadd(mm,1,@Tarih)))


buradan donen sonuç ile de o ayın kaç çektiğini bulabilirsin. Ben genelde boyle kullanıyorum..

Herkese ilgisinden dolayı tşkler.
derviş
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Belki şöyle özetlenebilir; FUNCTION ve STORED PROCEDURE nin her ikisi de birden fazla parametre alıp içeride yapılan veritabanı işlemleri ve diğer matematiksel işlemlerden sonra birden fazla sonuç değer döndürebilirken, SP aynı zamanda bir tablo gibi kullanılabilir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

rsimsek yazdı:Belki şöyle özetlenebilir; FUNCTION ve STORED PROCEDURE nin her ikisi de birden fazla parametre alıp içeride yapılan veritabanı işlemleri ve diğer matematiksel işlemlerden sonra birden fazla sonuç değer döndürebilirken, SP aynı zamanda bir tablo gibi kullanılabilir :wink:
Hocam tam ters oldu gibi. FireBird'de SP'ler, MS-SQL'de SF'ler bir tablo gibi kullanılıyor.

İyi çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

:?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla