doygundemirol@gmail.com

SQL Stored Procedure OUTPUT kullanımı

Merhabalar; Bu makalede stored procedure ler ile OUTPUT kullanımına değineceğim . Stored procedure(sp) lar bize default olarak bir integer değer döndürürler fakat bazen uygulama içinde farklı değerleri döndürmemiz gerekbilir. Buna çözüm olarak basit bir kullanıcı login örneğinden bahsederek OUTPUT kullanımını göstereceğim.

Örnekte kullanacağım tablonun design hali bu şekilde:

Örnekte kullanacağım tablodaki örnek veri:

Vereceğim örneğe kısaca değineyim. Bir kullanıcı login formu düşünelim. Bu form üzerinden kullanıcı adı ve şifre bilgilerini birer parametre olarak sp mize gönderiyoruz. Sp üzerinde ilgili işlemleri yaptırdıktan sonra geriye kullanıcı adı ve şifrenin doğru ya da yanlış olduğunu gösteren bir değer gönderiyoruz. Bu değere OUTPUT parametresi diyoruz. Sp ye ait kodlar şu şekilde:

 

CREATE PROCEDURE KULLANICI_GIRISI
(
@KULLANICI_ADI CHAR(50), -- Kullanıcıdan gelen kullanıcı adı bilgisini temsil eden parametre
@SIFRE CHAR(50),  -- Kullanıcıdan gelen kullanıcı şifre bilgisini temsil eden parametre
@Sonuc int output,  -- Geriye sonuç değerini döndüren parametre 
@KullaniciID int output, -- Geriye kullanıcının id değerini döndüren parametre 
@KullaniciYetki tinyint output  -- Geriye kullanıcı yetki değerini döndüren parametre 
)
AS
IF EXISTS (SELECT @KullaniciID=KULLANICI_ID, @KullaniciYetki=YETKI_ID FROM KULLANICI WHERE KULLANICI_ADI=@KULLANICI_ADI AND SIFRE=@SIFRE)
-- if exists komutu, parantez içindeki sorgunun değer döndürüp döndürmediğini kontrol eder. Eğer sorgu bir sonuç kümesi döndürüyorsa @Sonuc parametresi 1 değerine eşitleniyor. Döndürmüyorsa 0 değerine eşitleniyor.
SET @Sonuc=1
 
ELSE
 
SET @Sonuc=0
 
RETURN @Sonuc
 
 
Burada dikkat etmemiz gerekn nokta dışardan sp mize gelecek parametrelerimizin sonunda herhangi birşey yazmıyoruz. Sadece veri tiplerini belirtiyoruz fakat geriye döndürmek istediğimiz parametrelerimiz için output sözcüğünü kullanıyoruz. Bunun haricinde @KullaniciID ve @KullaniciYetki parametrelerimize if exists komutu içerisinde de yukarıda görüldüğü gibi değer verebiliriz.
 
Şimdi Sp mizi yazdıktan sonra test edelim. 
 
Dışardan sp mize gelen parametrelerimiz kullanıcı adı ve şifre olduğundan sadece bu alanlara veri girişi yapıyorum.
 
Yanlış veri girişi örneği:
 
Sonuç:
Görüldüğü gibi @Sonuc parametresi 0 değerini geri döndürdü. @KullaniciID ve @KullaniciYetki parametrelerinin null dönmesinin nedeni ise bu giriş bilgilerine ait bir kayıt olmamasıdır.
 
Doğru veri girişi örneği:
 
Sonuç:
Kullanıcı adı ve şifre bilgileri doğru olduğundan dolayı @Sonuc parametresi 1 değerini döndürdü. Ayrıca @KullaniciID ve @KullaniciYetki parametreleri de tablodaki değerleri ile geri döndürülmüş oldu.
 
C# formu üzerinde bu örneği uygulayıp en kısa zamanda paylaşacağım. Herkese iyi çalışmalar...

Resim Galerisi