7-SQL DERSLERİ – PARAMETRE, IF, ELSE IF, WHİLE

64
görünümler

Parametreler işimizi çok kolaylaştıran yapılardır. Büyük bir kod bloğu düşünün çünkü gerçek hayatta bu böyledir. Örneğin bir banka yazılımı yazıyorsanız bir store procedure yazdığınız zaman bu kod iki üç sayfaya kadar çıkabilir. Bu sayfalarda bir değişkeni her yerde elle değiştiremezsiniz. Bu çok uzun zaman alır. Onun yerine parametre tanımlarsınız ve bunun sayesinde işleminizi kolaylıkla halledebilirsiniz.

Bir örnekle bunu anlamaya çalışalım.

parametresqlYukardaki örnekte ” FactInternetSales ” tablosunda ” PromotionKey ” i 1 olan kayıtları getirdik. Toplamda 58247 tane kayıt var. Bunu çok büyük bir kod bloğu olarak düşünün ve yeri geldiği zaman bir sürü yerde ” PromotionKey ” i çekmek  zorunda olduğunuzu düşünün. Yeri geldiği zaman 1 yazıcaksınız yeri geldiği zaman 2 yazıcaksınız.

Peki nasıl olacak bu?

O zaman devreye işte parametre giriyor.Şimdi bunun örneğini yapalım.

parametresql2Parametre oluştururken DECLARE ile yaparız. Ve parametreyi tanımlarken başına @işareti koyarız. Ondan sonra parametreye hangi ismi vermek istiyorsanız onu yazarsınız. Ardından tür tipini vericeksiniz ben örnekte değer olarak 1 verdim. Bundan sonra yaptığımız işlem ise where de yazdığımız koşulun yerine gelip bu parametreyi yazmak.

Başka bir örnekte parametre yi nvarchar olarak tanımlayalım.

Aşağıdaki örneği inceleyelim.

parametresql3Yukardaki örnekte ikinci bir parametre tanımladık ve SalesOrderNumber  ında ‘ S07 ‘ değerini barındırdan kayıtları getirdik. Yüzde işaretleri karakter olduğu için tek tırnak içinde yazdık. Önceki konularda bunlardan bahsetmiştik. Bir konudan daha bahsetmek istiyorum. Parametreyi illaki tür tipinden sonra değer vermek zorunda değiliz.

Aşağıdaki örnekte farklı yapılışını göreceksiniz.

parametresql4Tür tipini yazdıktan sonra aşağıdaki satırda SET tagını yazıp tekrardan parametreyi yazıp değerini yazabiliriz . İkisi de aynı kapıya çıkar. Parametreler bu şekilde tanımlanır.

Şimdi bir sonraki konuya geçelim parametrelerin olmazsa olmazları IF li yapılar.

Örnek olarak PromotionKey i 2 olanları istiyoruz. Ve yanlışlıkla başka bir PromotionKey girersek kayıtları getirmesin ve ekrana uyarı gelsin.

Aşağıdaki örneği inceleyelim.

ifyapısısqlYukardaki kodda PromotionKey i 2 olanlar geldi. IF yapısı eğer yazdığımız koşul doğruysa IF içindeki yapar, yanlışsa ELSE in içindekini gerçekleştirir. Yukarıdaki kodda doğru olduğu için hata vermedi. BEGIN ve END deyimleri bir grup SQL deyimini bir blok içinde toplamayı sağlar.

Şimdi de parametreyi verdiğimiz değeri 1 olarak değiştirelim ve sonucu görelim.

ifyapısı2Parametreyi 1 olarak değiştirdiğimde koşulu sağlamadığından dolayı ELSE nin içine girdi ve ” Yanlış Seçim Yaptınız ” sonucu çıktı karşımıza.

Bir IF yapısı daha ekleyip başka bir örnek yapalım.

ifyapısısql3Yukardaki örnekte IF den birde ELSE IF kullandık. Bu şu demektir. Önce ilk sıradaki IF’in içine gir eğer koşulu sağlamazsa ELSE IF in içine gir oradaki koşulu sağlarsa kayıtları ekrana getir.

Peki biz DECLARE den sonra parametrenin değerini 3 girseydik ne olacaktı?

Bu seferde Yanlıs Seçim Yaptınız sonucu ekrana gelecekti. Çünkü her iki IF bloğu içindeki koşulları sağlamadığından dolayı ELSE nin içindeki koşulu sağladı.

IF lere son olarak eklemek isteğim birşey var. IF ler performans açısından çok hızlıdırlar. Çünkü bir anda eğer doğru index yapılmışsa kaç parça varsa o kadarını bir anda elerler ve çok daha hızlı sonuç dönmesini sağlarlar.

Ek olarak birde WHILE var. WHILE döngüdür. WHILE döngüsü SQL’de  bir şarta bağlı olarak sonlandırılabilir. Yani ilgili şartın TRUE ya da FALSE olması ile birlikte durdurulabilir. Eğer şart belirlenmeden bir WHILE döngüsü oluşturulursa döngü sonsuz döngü olur ve durdurulmaz, ta ki başka hatalar çıkana kadar.

Mesela bir sayaç örneği yapalım.

whilesqlÖnce değişken tanımlamamız lazım. Değişken tanımlamadan kesinlikle bu işlemi yapamayız. Değişkenimiz de sayaçın 100 e kadar dönmesini istiyoruz. Sayacımız 100 defa dönücek ve böylece 1 den 100 e kadar ekrana basması gerekecek.

Bir sonraki derse geçmek için tıklayınız.

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz