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.
Stored Procedure ve Fonsiyonlar arasındaki farklar
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.
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.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
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.Bu da örnek fonksiyonumuzun kodu
.
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

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
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.
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ş
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 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hocam tam ters oldu gibi. FireBird'de SP'ler, MS-SQL'de SF'ler bir tablo gibi kullanılıyor.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
İyi çalışmalar.