SQL Insert, Update, Delete Output

SQL Insert, Update, Delete Output

29 Aralık 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 137
Yaklaşık okuma süresi : 3 DK
SQL Sıralı GUID Vermek - SQL NEWSEQUENTIALID
SQL Server Database Listesi Almak
SQL Insert, Update, Delete Output
5 (100%) 1 Oy

SQL Insert, Update, Delete Output, yazım ile sql eğitim setimize devam ediyorum. Bu dersimizde sql de insert, update ve delete yaparken istediğimiz bir kolondaki bilgiyi geri dönüş olarak alma işlemini yani SQL Output işlemini göreceğiz. Bu ders sql ScoopeIdentity() işlemi değildir. ScoopeIdentity() sadece indentity key kolonunu yani id kolonundaki bilgiyi verir ama biz herhangi bir kolondaki veriyi alacağız.

SQL Insert Output

İlk önce insert işleminden SQL Output görelim. Bir tabloya insert kayıt eklediğimizde çoğu zaman bir geri dönüş almak isteriz. Bu da genelde ID kolonundaki id değeri olur. Ancak daha farklı bir veriyi almak istersek ne yapacağız? Bunun için çoğunlukla da ScoopeIdentity ile ID kolonunu alırız ve insert işleminden sonra bir select sorgusu ile istediğimiz bilgileri alırız. bu hem performans açısından bir sıkıntıdır hemde fazladan kod yazmamızı neden olur.

Şimdi göreceğimiz işlemde insert sorgusunun içerisine ekleyeceğimiz bir kaç komut ile istediğimiz bilgileri nasıl alacağımızı göreceğiz.

Diğer bir deyiş ile İnsert sorgusu ile select sorgusunu tek seferde yazacağız. Çok önceleri üzerinde uğraşmış olduğum bir projenin veri tabanı üzerinden bir örnek hazırladım. Görelim.

INSERT INTO ALINAN_ADISYON 
(
	  Kasa_Masa_Kodu
	, Kasa_Giren_Tutar
	, Kasa_Masa_Sip_Adet
)
OUTPUT 
	  INSERTED.Kasa_RECno
	, INSERTED.Kasa_Masa_Kodu
	, INSERTED.Kasa_Giren_Tutar
	, INSERTED.Kasa_Masa_Sip_Adet

VALUES ('T1', 500, 10)

Sorguyu incelediğimizde farklı olan kısmı görebiliyorsunuz değil mi? Sorguda görünen OUTPUT kısmında INSERTED.* olarak belirtilen kolondaki bilgiler bize geri dönüş olarak geliyor. Aşağıdaki bu sorgu çalıştığında gelen dönüşü görebilirsiniz.

sql insert output

Örnek üzerinde sadece inseert edilen kolonların bilgilerini geri dönüş olarak aldık ancak burada tablodaki tüm kolonları alabiliriz. Örnek olarak Kasa_RECno kolonu insert içerisinde yer almıyor ama Output kısmında kullanabiliyoruz.

İlgili İçerik  SQL Guid vs Sequential GUID - Performans Karşılaştırması

 

SQL Update Output

Şimdi  sırada output almayı yani geri dönüş almayı Update işlemi sırasında nasıl yaptığımızı görelim. Düşündüğünüz gibi burada da UPDATED olarak değil yine INSERTED olarak kullanıyoruz. Hemen örneğimizi görelim.

UPDATE  ALINAN_ADISYON  SET
	  Kasa_Masa_Kodu = 'T10'
	, Kasa_Giren_Tutar = 250
	, Kasa_Masa_Sip_Adet = 25

OUTPUT 
	  INSERTED.Kasa_RECno
	, INSERTED.Kasa_Masa_Kodu
	, INSERTED.Kasa_Giren_Tutar
	, INSERTED.Kasa_Masa_Sip_Adet

WHERE Kasa_RECno = 2087

Yine yukarıda verdiğim örneği bir update sorgusuna dönüştürdüm ve değerleri biraz değiştirdim. Örnekte gördüğünüz gibi Where şartını yazmadan önce istediğimiz output değerlerini yazıyoruz.

NOT: Burada ekran görüntüsü vermedim ama yukarıdaki ile aynı olduğundan dolayı ekran görüntüsü koyma gereği duymadım.

 

Diyelim ki,

Bu output değerlerini alırken birde hesaplatma yapmak istiyorsunuz. Atıyorum 10 tane iskonto yazdınız ve bu iskontoların toplamını geri dönüş almak istiyorsunuz. Buna benzer bir işlem yapalım. 

UPDATE  ALINAN_ADISYON  SET
	  Kasa_Masa_Kodu = 'T10'
	, Kasa_Giren_Tutar = 250
	, Kasa_Masa_Sip_Adet = 25

OUTPUT 
	  INSERTED.Kasa_RECno + 50
	, INSERTED.Kasa_Masa_Kodu + '-55'
	, INSERTED.Kasa_Giren_Tutar + 10
	, INSERTED.Kasa_Masa_Sip_Adet + INSERTED.Kasa_Giren_Tutar 

WHERE Kasa_RECno = 2087

Örnekte gördüğünüz gibi output değerlerini alırken bu aldığımız değerlere müdahele edebiliriz. 

 

SQL Delete Output

Aynı şekilde Delete işleminde de bunu kullanabiliyoruz.

delete from ALINAN_ADISYON 

OUTPUT 
	DELETED.Kasa_RECno,
	DELETED.Kasa_Masa_Kodu

WHERE Kasa_RECno = 2087<br><br>

 

Bu komutu kullandığımızda scopeIdentity() komutunu da kullanmamıza gerek kalmıyor. Son zamanlarda Guid kullanılmaya başlandığınız da göz önüne alırsak ve scoperIdentity() nin de guid için çalışmadığını da göz önüne alırsak en güzel çözüm olarak bu komut karşımıza çıkıyor.


SQL Insert, Update, Delete Output , dersimizde bu kadardı dostlar. SQL Output işlemi gerçekten çok işimize yarayacak bir komut olarak karşımıza çıkıyor. Çok kullanışlı ve çok işe yarar bir komuttur. Bun komutu öğrendiğim günden beri sürekli olarak kullanıyorum.

Diğer SQL derslerimizde görüşmek üzere.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

İlgili İçerik  SQL Table-Valued Functions – Tablo Fonksiyonları

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Takipte kalın.

SQL Sıralı GUID Vermek - SQL NEWSEQUENTIALID
SQL Server Database Listesi Almak