MSSQL GO Nedir? Nasıl Kullanılır?

MSSQL GO, Sorgularda sık sık GO anahtar kelimesine rastlamışızdır bu anahtar kelimesinin asıl amacı nedir ne için kullanırız sildiğimizde bile çalışan sorguda neden kullanıyoruz gibi sorulara cevap vereceğiz.

MSSQL GO Nedir? Nasıl Kullanılır?

MSSQL GOGo komutu bir T-SQL ifadesi değildir, fakat TSQL kodlarında sıkça kullanılır. GO komutu öncesinde yazılmış olan tüm sql ifadelerini veya bir önceki GO ifadesine kadar olan tüm sql ifadelerini tek bir execution plan dahilinde SQL Servera gönderir. SQL Server GO komutunu scripti servera göndermek için bir işaret olarak algılar.

Go komutu T-SQL ifadesi olmadigi için yeni bir satirda tek basina yazilir , ayni satirda sadece açiklama satiri yer alabilir.

Go komutu kullanımı ile ilgili bir örnek yapacağız bu örnekte GO anahtar kelimesinden önce INT tipininde bir değişken tanımladık ve tanımladığımız bu değişkene 3 değerini verdik GO anahtar kelimesinin yer aldığı satırdan önce ve sonra print ederek Message tabında 3 değerinin yazılmasını sağladık GO anahtar kelimesinden önceki print satırı işlenirken sonraki print satırında değişkenimize erişemediğimizi görmekteyiz makalemizin başlarındada bahsettiğimiz gibi GO anahtar kelimesine kadarki kısım ayrı bir execution plan olarak işler ve GO anahtar kelimesi ile öncesinde yer alan herşey erişilemez durumda olur. Şimdi kodlar üzerinden olayı daha net anlamaya çalışalım.

MSSQL

Sonuç

sql-server-go-change

Üstteki görselde gözüktüğü gibi ÇALIŞ(GO anahtar kelimesini ÇALIŞ olarak değiştirdik nasıl değiştiğini bir alttaki maddeden görebilirsiniz) adlı anahtar kelimesinden önceki print 3 değerini messages kısmına yazdı fakat sonraki print yazma işlemi sırasında @sayi adlı değişkene erişemediği için hata verdi. Erişememe sebebide daha önce belirttiğimiz gibi ÇALIŞ(GO) anahtar kelimesine kadar olan kısımlar ayrı bir execution plan dahilinde çalışır.

GO Anahtar Kelimesini Değiştirme

GO anahtar kelimesi TSQL’e ait bir terim değildir bu yüzden bu anahtar kelimenin değişimine MSSQL Server Management Studio‘da Options > Query Execution > SQL Server > General kısmında en altta yer alan Batch Seperator’de eğer daha önce değişiklik yapılmadı ise GO yazdığını göreceksiniz ben oradaki değeri ÇALIŞ olarak değiştirdim değişikliği yapıp OK dedikten sonra açık olan sorguları kapatıp tekrar açtığınızda yada yeni bir sorgu açtığınızda artık ÇALIŞ komutunun MSSQL tarafından tanındığını ve renklendiğini göreceksiniz alttaki görseldede değişikliğin yapılacağı yeri görebilirsiniz.

MSSQL GO Batch Seperator Change

Bazı İpuçları

  • Go komutu diğer T-SQL komutları ile aynı satırda kullanılamaz.
  • GO komutundan önce tanımlanan bir değişken GO komutundan sonra kullanılamaz. Çünkü daha önceki kod yığınının sona erdiğini belirtmektedir.
  • Kodun sonunda GO kullanılmadığı veya tüm sorgu bitmediği sürece komutlar sunucuya gönderilmez.

Go Komut İle İstediğimiz Sayıda İşlem Gerçekleştirme

Go komutunu sadece yığın biriktirip bu yığınları belli paketler halinde çalıştırmaktan ziyade GO komutunda sonra belirtebileceğiniz sayı kadar çalışmasınıda sağlayabilirsiniz örnek olarak tablo adında geçici bir tablo oluşturarak deger adında BIGINT türünde bir alan oluşturalım ilk INSERT INTO #tablo(deger) SELECT 1 ifadesi sadece GO komutu kullanılması dolayısıyla bir insert işlemi gerçekleştirecek fakat INSERT INTO #tablo(deger) SELECT SUM(deger) FROM #tablo ifadesinden sonra kullanılan GO 10 tanımlaması ile değer alanı sürekli toplanarak yeni 10 insert işlemi gerçekleştirilecek. şimdi kod üzerinden kurguyu daha iyi anlamaya çalışalım.

Sonuç

deger
1
1
2
4
8
16
32
64
128
256
512

Kaynaklar

Bunlar da hoşunuza gidebilir...

Bir Cevap Yazın