İfade Seviyesi:
BEGIN...END blokları: BEGIN ve END arasında yazılan SQL ifadelerinin bir bütün olarak algılanmasını sağlar.
IF...ELSE blokları: Eğer o anki durum için ilk alternatif doğruysa SQL Server ilk ifadeyi gerçekler, ikinci ifade doğruysa ikinci ifade greçeklenir.
Örnek:
USE veritabanı
IF EXISTS (SELECT * FROM KİŞİ WHERE NAME='isim1' AND SURNAME='soyad1')
BEGIN
PRINT '***tabloda mevcut.'
SELECT * FROM KİŞİ WHERE NAME='isim1' AND SURNAME='soyad1'
END
ELSE
BEGIN
PRINT '***tabloda mevcut değil, şimdi oluşturuluyor...'
INSERT INTO KİŞİ VALUES ('isim1','soyad1',5)
PRINT '***tabloya eklendi.'
END
tabloda "isim1" ve "soyad1" kullanıcısının kaydı olduğu için ilk ifade doğrudur, çıktısı da şu şekilde olur:
***tabloda mevcut.
(1 row(s) affected)
Örnek:
USE veritabanı
IF EXISTS (SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2')
BEGIN
PRINT '***tabloda mevcut.'
SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2')
END
ELSE
BEGIN
PRINT '***tabloda mevcut değil, şimdi oluşturuluyor...'
INSERT INTO KİŞİ VALUES (11,'isim2','soyad2',117)
SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2'
PRINT '***tabloya eklendi.'
END
tabloda "isim2" ve "soyad2" kullanıcısına ait kayıt olmadığı için 2. ifade gerçeklendi, çıktısı da şu şekilde olur:
***tabloda mevcut değil, şimdi oluşturuluyor...
(1 row(s) affected)
(1 row(s) affected)
***tabloya eklendi.
"While" Yapısı:
"While" ifadesindeki şartı doğrulayacak şekilde bir çevrim oluşturulur; "Break" ve "Continue" ifadeleri ile çevrim kontrol edilir.
Örnek: FİYAT isimli bir tablo olsun, Özgür'ün aldığı bir malın satış fiyatının alış fiyatından daha yüksek olması için her seferinde alış fiyatının 2 ile çarpılmasını sağlayalım:
USE veritabanı
SELECT * FROM FİYAT WHERE ID='kullanıcı'
WHILE((SELECT SATIŞ FROM FİYAT WHERE ID='kullanıcı')<(SELECT ALIŞ FROM FİYAT WHERE ID='kullanıcı'))
BEGIN
UPDATE FİYAT
SET SATIŞ=SATIŞ*2 WHERE ID='kullanıcı'
END
SELECT * FROM FİYAT WHERE ID='kullanıcı'
GO
Çıktı da şu şekilde olacaktır:
Satır Seviyesi:
"Case" ifadesi: Her durum için belirlenmiş alternatiflere tek tek bakar ve hangisine uyuyorsa onu gerçekler.
Örnek: KARZARAR adlı bir tablo olsun. Bu tabloda alış ve satış fiyatlarından yola çıkarak kar ya da zarar ile ilgili bir alan oluşturup sonuç görülmek istenirse CASE ifadesini kullanılır.
SELECT MALNO,'DURUM'=
CASE
WHEN(SATIS>ALIS) THEN 'KAR VAR'
WHEN(SATIS<ALIS) THEN 'ZARAR VAR'
ELSE 'NE KAR NE ZARAR VAR'
END
FROM KARZARAR
çıktısı da şu şekilde olacaktır:
(4 row(s) affected)
Yorumlar:
SQL dili kullanılarak oluşturulan bloklarda bir satırda yorum yapmak için iki ifade kullanılabilir:
--yorum
--yorum--
Bir blok halinde yazılmak istenen yorumlar ya da açıklayıcı bilgiler olursa ;
/*yorum*/
şeklinde kullanılabilir.
Örnek:
SELECT MALNO,'DURUM'=
CASE
WHEN(SATIS>ALIS) THEN 'KAR VAR' --kar varsa hesaplar--
WHEN(SATIS<ALIS) THEN 'ZARAR VAR' --zarar varsa hesaplar--
ELSE 'NE KAR NE ZARAR VAR'
END
/*SQL, CASE ifade yöntemi ile
DURUM adı altında bir alan oluşturulup
görülmek istenilen bilgileri vermiş oldu */
FROM KARZARAR