Sql Server

Sql Server goto Deyimi

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda Sql Server’da goto deyiminin kullanımını anlatacağım. Hadi başlayalım !

goto deyimi, günümüzde popüler olan programlama dillerinde bulunmasada; nispeten eski programlama dillerinin birçoğunda bulunan birşey idi ve bence kullanışlı idi de 🙂

goto deyimi kod üzerinde atlatma yapmak için kullanılmakta ve ben en çok stored procedurelerde ve fonksiyonlarda kullanıyorum. Örneğin parametre olarak aldığım verilerin istediğim gibi gelip gelmediğini kontrol edip istediğim gibi gelmediyse doğrudan fonksiyonu bitirmek için goto deyimiyle fonksiyonun sonuna gönderiyorum. Fonksiyonun sonunda ise hata döndürüyorum. Sizde bu ve bunun gibi birçok yerde goto deyimini kullanabilirsiniz. Örneğin 10 satırlık bi kodu birçok yerde kullanacaksanız o zaman her seferinde aynı kodları yazmak yerine tekrar eden kodları bir blokta toplayabilir ve sonrasında kodu goto deyimiyle o bloğa yönlendirebilirsiniz. goto’nun yapısı şöyle olmakta;

-- diğer Sql kodları
goto label

-- diğer Sql kodları

label:
	-- goto ile yönlendirdiğinizde yapılacak işlemler

Buradaki label kısmına istediğiniz ismi verebilirsiniz. Kod, goto kelimesini gördüğü anda verdiğiniz ismi alacak ve o isimde bir kod bloğu olup olmadığına bakacaktır. O isimde bir kod bloğu varsa o kod bloğundan itibaren devam edecek, yoksa da hata verecektir. Yani goto kelimesini koyduğunuz yer ile yönlendirdiğiniz kod bloğu arasındaki kodlar atlanmış olacaktır yani göz ardı edilip çalıştırılmayacaktır. Örneğin bir tane stored procedure oluşturalım ve bu procedurede bir tane parametre alalım ve bu parametrenin değerinin 100’den küçük olması gereksin. Ayrıca ikinci bir parametre de 0’a eşit olmasın. Birinci parametre 100’den büyük veya ikinci parametre 0’a eşitse hata verdirelim, aksi durumda birinci sayıyı ikinci sayıya bölelim.

create procedure bol @sayi1 int, @sayi2 int as
	if @sayi1 > 100
	begin
		goto son
	end
	if @sayi2 = 0
	begin
		goto son
	end
	select 'sonuç: ' + @sayi1 / @sayi2
	goto bitis
	
son:
	select 'Parametre hatası' 
bitis:

İlk if içerisinde @sayi1 parametresinin 100’den büyük olup olmadığını kontrol ettik. 100’den büyükse goto son ile son isimli kod bloğuna gönderdik. İkinci if’te @sayi2 parametresinin 0’a eşit olup olmadığını kontrol ettik ve 0’a eşitse yine son isimli kod bloğuna gönderdik. İki if içerisine de girilmezse yani @sayi1 parametresi 100’den küçük ve @sayi2 parametresi 0’a eşit değilse @bolum parametresine iki sayının bölümünü atadık ve sonrasında goto bitis ile bitis isimli kod bloğuna gönderdik. goto bitis ile başka bir yere göndermemizin sebebi şu; son isimli kod bloğuna kimse göndermezse bile kod yukarıdan aşağıya doğru çalıştırıldığı için bölme işleminden sonra da son kod bloğuna girecek ve yine Parametre hatası yazacaktır. Yani bir kod bloğuna kimse göndermese bile kodun akışı içerisinde bulunuyorsa o alan çalıştırılır. Bunu önlemek için bitis isimli bir kod bloğu oluşturduk ve bölme işleminden sonra o alana gönderdik. Kod bloğunun içerisine hiç kod yazmayarak stored procedurenin bitirilmesini sağladık.

Bu örnekle beraber 2 şey görmüş olduk. Birincisi, goto bloklarına bir gönderme yapılmasa bile kod akışı içerisinde bulunurlarsa yine çalıştırılırlar. İkincisi kod blokları içerisinde kod yazmasına gerek yok, boş bloklar oluşturulabilir. Şimdi yazdığımız bu procedureyi test edelim. Örneğin (101, 10), (90, 0) ve (100, 10) parametreleri ile test edelim. Bunun için aşağıdaki şekilde bir kod çalıştıracağız;

exec bol 101,10
exec bol 90,0
exec bol 100,10

Bu kodu çalıştırdığımızda şöyle bir çıktı göreceğiz;

sql server goto deyimi 1
Sql Server goto Deyimi

Evet Sql Server’da goto deyimi kullanımı bu şekilde yapılmakta. Tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu