MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı

SQL dilinde, Stored Procedure (Saklı Yordam) üzerinde veri ekleme (insert), veri güncelleme (update), veri silme (delete) örneğimiz.

Diyelim ki, bir üye kayıt sistemi yapıyorsunuz ve de bu sistemde üyeye ait kullanıcı adı, şifre, e-posta adreslerinin bulunduğu bir tablonuz mevcut. Bu tabloya yeni üye kaydı yapılırken kullanıcı adı ve e-posta kontrolü yapan uygulamadır. Eğer ki kullanıcı adı daha önceden kayıtlı ise sonuç olarak bize -2 değerini, e-posta adresi daha önceden kayıtlı ise sonuç olarak bize -1 değerini verecektir. Kayıt başarılı bir şekilde gerçekleşirse sonuç olarak bize kaydı gerçekleşen üyenin ID değeri görünecektir. Öncelikle veritabanımızdaki tabloyu oluşturalım.

Tablomuzu oluşturalım

Üyelerin bulunduğu tablo (tblUyeler)
CREATE Table tblUyeler
(
uye_ID INT PRIMARY KEY IDENTITY,
kullanici_adi nvarchar(50),
sifre nvarchar(50),
e_posta nvarchar(50),
tarih datetime DEFAULT GETDATE(),
durum bit DEFAULT 0
)
Oluşan tblUyeler tablosu
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Üye ekleyen stored procedure (saklı yordam)

Şimdi ise üye kaydını gerçekleştiren Stored Procedure kodlarını yazalım. Üye kaydının gerçekleşebilmesi için kullanıcı adı ve e-posta adresi bir başka kullanıcıda olmamalıdır. Bu yüzden, kaydın gerçekleşmeden önce bu kayıtların varlığı sorgulanmalıdır.
Stored Procedure (Ekleyen)
CREATE PROCEDURE Sp_Uye_Ekle
(
	@kullanici_adi nvarchar(50),
	@sifre nvarchar(50),
	@e_posta nvarchar(50),
	@durum bit,
	@Sonuc int output
)
AS
	DECLARE @kullanici_adi_var INT
	DECLARE @e_posta_var INT
	Select @kullanici_adi_var = COUNT(uye_ID) from tblUyeler WHERE kullanici_adi = @kullanici_adi
	Select @e_posta_var = COUNT(uye_ID) from tblUyeler WHERE e_posta = @e_posta
	IF @kullanici_adi_var > 0
		BEGIN
			SET @Sonuc = -2
		END
	ELSE IF @e_posta_var > 0
		BEGIN
			SET @Sonuc = -1
		END
	ELSE
		BEGIN
			INSERT INTO tblUyeler (kullanici_adi, sifre, e_posta, durum) values(@kullanici_adi, @sifre, @e_posta, @durum)
			SET @Sonuc = @@IDENTITY
		END
	SELECT @Sonuc
Birkaç tane üyeyi kayıt edelim.

İlk Üyeyi Ekleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Ekle 'serkan', 'şifre1', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Insert

Eklediğimiz Üyenin Bilgileri
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Eklenen Kayıt Bilgileri

İkinci Üyeyi Ekleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Ekle 'ahmet', 'şifre2', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Çalışan Yordamın Ekran Görüntüsü

Eklediğimiz Üyenin Bilgileri
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Eklediğimiz Üyenin Bilgileri

Üçüncü Üyeyi Ekleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Ekle 'mehmet', 'şifre3', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Eklenen Kayıt Bilgileri

Eklediğimiz Üyenin Bilgileri
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Eklediğimiz Üyenin Bilgileri

Kullanıcı adı ahmet olan üyeyi yeniden eklemeye çalışalım
Aynı Kullanıcı Adına Sahip Kayıt Ekleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Ekle 'ahmet', 'şifre4', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Kayıt Var Uyarısı

Görüldüğü gibi bize -2 değerini verdi yani "bu kullanıcı adı kayıtlı".
Mail adresi [email protected] olan üyeyi yeniden eklemeye çalışalım
Aynı E-Posta Adresine Sahip Kayıt Ekleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Ekle 'veli', 'şifre5', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı, Kayıt Var Uyarısı

Görüldüğü gibi bize -1 değerini verdi yani "bu mail adresi kayıtlı".

Üyeyi güncelleyen stored procedure (saklı yordam)

Güncellenecek üyenin kullanıcı adı kendisi hariç bir başka üyede varsa sonuç olarak bize -2 döncektir.
Güncellenecek üyenin e-posta adresi kendisi hariç bir başka üyede varsa sonuç olarak bize -1 döncektir.
Eğer ki güncelleme başarılıysa sonuç olarak bize 1 döncektir.
Stored Procedure (Güncelleme)
CREATE PROCEDURE Sp_Uye_Guncelle
(
	@uye_ID INT,
	@kullanici_adi nvarchar(50),
	@sifre nvarchar(50),
	@e_posta nvarchar(50),
	@durum bit,
	@Sonuc int output
)
AS
	DECLARE @kullanici_adi_var INT
	DECLARE @e_posta_var INT
	Select @kullanici_adi_var = COUNT(uye_ID) from tblUyeler WHERE uye_ID <> @uye_ID AND kullanici_adi = @kullanici_adi
	Select @e_posta_var = COUNT(uye_ID) from tblUyeler WHERE uye_ID <> @uye_ID AND e_posta = @e_posta
	IF @kullanici_adi_var > 0
		BEGIN
			SET @Sonuc = -2
		END
	ELSE IF @e_posta_var > 0
		BEGIN
			SET @Sonuc = -1
		END
	ELSE
		BEGIN
			UPDATE tblUyeler SET kullanici_adi = @kullanici_adi, sifre = @sifre, e_posta = @e_posta, durum = @durum WHERE uye_ID = @uye_ID
			SET @Sonuc = 1
		END
		SELECT @Sonuc

2 numaralı üyeyi, yani kullanıcı adı ahmet olan üyenin bilgilerini güncelleyelim.
İkinci Üyenin Bilgilerini Güncelleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Guncelle 2, 'ahmet', 'yenişifre', '[email protected]', 0, @Sonuc

Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Güncellenen tblUyeler tablosu
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

3 numaralı üyeyi, yani kullanıcı adı mehmet olan üyenin bilgilerini güncelleyelim. Diyelim ki bu kullanıcının kullanıcı adını serkan olarak belirleyelim
Üçüncü Üyenin Bilgilerini Güncelleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Guncelle 3, 'serkan', 'şifre3', '[email protected]', 0, @Sonuc

Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Görüldüğü gibi bize -2 değerini verdi yani "bu kullanıcı adı bir başka üyeye ait" böylece güncelleme yapılmamış oldu.
1 numaralı üyeyi, yani kullanıcı adı serkan olan üyenin bilgilerini güncelleyelim. Diyelim ki bu kullanıcının e-mail adresini [email protected] olarak belirleyelim
Birinci Üyenin Bilgilerini Güncelleyelim
DECLARE @Sonuc INT
EXEC Sp_Uye_Guncelle 1, 'serkan', 'şifre1', '[email protected]', 1, @Sonuc
Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Görüldüğü gibi bize -1 değerini verdi yani "bu mail adresi bir başka üyeye ait" böylece güncelleme yapılmamış oldu.

Üyeyi silen stored procedure (saklı yordam)

CREATE PROCEDURE Sp_Uye_Sil
(
	@uye_ID INT,
	@Sonuc NVARCHAR(20) output
)
AS
	DECLARE @Uye_Var INT
	Select @Uye_Var = COUNT(uye_ID) from tblUyeler WHERE uye_ID = @uye_ID
	IF @Uye_Var > 0
		BEGIN
			DELETE FROM tblUyeler WHERE uye_ID = @uye_ID
			SET @Sonuc = 'üye silindi'
		END
	ELSE
		BEGIN
			SET @Sonuc = 'üye bulunamadı'
		END
		SELECT @Sonuc

5 numaralı üyeyi silmeyi deneyelim (olmayan bir kullanıcıyı)
Silme İşlemi
DECLARE @Sonuc NVARCHAR(20)
EXEC Sp_Uye_Sil 5, @Sonuc

Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

1 numaralı üyeyi, yani kullanıcı adı serkan olan üyeyi silmeyi deneyelim
Silme İşlemi
DECLARE @Sonuc NVARCHAR(20)
EXEC Sp_Uye_Sil 1, @Sonuc

Çalışan Yordamın Ekran Görüntüsü
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Güncellenen tblUyeler tablosu
MSSQL Üzerinde Stored Procedure (Saklı Yordam) Kullanımı T-SQL

Görüldüğü gibi 1 numaralı üye silindi.

Yorumlar

  • Ozge Dinç

    Ozge Dinç:

    3 yıl önce

    Peki Mysql üzerinde Stored Procedure kullanımı farklılık gösteriyor mu?
    4 cevapla
  • Yönetici Yorumu:

    Çok bir fark bulunmamaktadır. Sadece yazım kısmında biraz farklılıklar mevcut.

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

Çizgi Filmler

EN

  • Popüler
  • Yeni
  • Son Yorum