SQL Server 2008 ile birlikte T-SQL dilindeki yeniliklerden, değişkenlere başlangıç değeri atanması, Bileşik operatörler ve Tablo Tipi ile ilgili iyileştirmeler ele alnmakta.
Transact SQL(kısaca T-SQL), SQL Server’a özgü SQL lehçesi olup, SQL Server üstünde sorgulamaların yapılabilmesi gibi basit amaçların yanı sıra, Stored Procedure’ler, fonksiyonlar, trigger’lar ve benzeri karmaşık veritabanı seviyeli program bileşenleri kodlamada kullanılan dildir.
Özellikle LINQ gibi ORM(nesne-ilişkilsel veri eşleşim) kütüphaneler yazılım dünyasında kullanılmaya başlandıkça T-SQL ile yazılan karmaşık kodları veritabanı seviyeli programatik öğelere kaydırmak neredeyse zorunluluk halini almakta. Böylece Veri katmanı ile iş katmanı arasındaki hatların daha keskin çizgilerle ayrıldığını söylemek mümkün.
Bu makalede, T-SQL dilinde ve kodlama ortamında SQL Server 2008 ile birlikte gelen yeniliklerden bir kısmını ele alacağız.
1.Değişkenlere Başlangıç Değer Ataması
T-SQL 2008’den itibaren herhangi bir değişkene tanımlandığı yerde başlangıç değeri atanabilir hale geldi. Diğer programlama dillerinden zaten alışık olduğumuz bu yöntemi artık T-SQL ile de kullanabileceğiz:
Örnek 1:

Şekil 1: Değişkenlere başlangıç değer atanabilmekte.

Şekil 2: SQL Server 2005 Beta-2’den itibaren kaldırılan intelli-sense desteği, SQL Server 2008 Management Studio ile tekrardan geliştiricilerin desteğine sunulmuş durumda. Management Studio ile T-SQL programları kodlarken, herhangi bir anda editör yardımı için, ctrl+space tuş bileşimini kullanabilirsiniz.
DİKKAT:
SQL Server 2008’den itibaren, satır sonlarını “;” ile bitirmeniz tavsiye edilmekte. İlerleyen sürümlerde, sonu noktalı virgül(;) ile bitmeyen ifadeleriniz sorun çıkartabilir.
2.Bileşik Operatör Desteği
T-SQL, 2008’den itibaren bileşik atama operatörlerine destek sağlamakta.
Örnek-2:
DECLARE @sayac INT=0;
SET @sayac +=7;
SELECT @sayac as arti7;
SET @sayac -=2;
SELECT @sayac as eksi2;
SET @sayac *=10;
SELECT @sayac as carpi10;
SET @sayac /=5;
SELECT @sayac as bolu5;
SET @sayac %=8;
SELECT @sayac as mod8;

Şekil-3:Bileşik Operatörlerin T-SQL’de kullanımı
T-SQL, şu an için artım(++) ve azatlım(--) operatörlerine destek sağlamamakta.
3. Tablo Tipi Değişkenler Hakkında
Tablo tipi değişkenler, SQL Server 2000’den bu yana destek verilen bir tip olmakla birlikte üstünde bir dize yenilikler yapılmış.
a)Toplu Değer Üretimi:
VALUES(…),(…)…..; kalıbı ile tablo tipinde değerler üretilebilmekte.
Örnek-3:

Şekil 4: Literal olarak verilen değerlerden tablo üretilmesi ve tablo tipinde bir değişkene eklenmesi. SQL Server 2008’deki yenilik, literallerin tablo gibi algılanmasıdır.
VALUES ifadesi ile elde edilen tabloyu başka amaçlar için de kullanabilirsiniz.
Örnek-4:
SELECT *
FROM(
VALUES (1,'ali',7),
(2,'veli',7),
(3,'cemal',6),
(4,'Gülçin',5)
) AS C(numara,isim,yas);
Ve elde edilen değerleri gerçek bir tabloymuş gibi sorgulamak mümkündür.

Şekil -5: Literal değerlerden türetilmiş tablo elde ederek sorgulama yapılması.
b)Tablo tipi değişkenleri alias tip olarak tanımlamak

Şekil: Tablo türünden bir alias tip oluşturmak
c) Tablo Tipi Değişkenleri Parametre Olarak Aktarmak
SQL Server 2008’e kadar, tablo tipi bir değişkeni prosedürel veritabanı bileşenlerine parametre olarak aktarmanın doğrudan bir yöntemi yoktu. Alternatif olarak virgülle ayrılmış string ifade gönderimi gibi yöntemler kullanılsa da güvenlik açıklarına neden olduğundan 2008 sürümden itibaren Tablo tipi girdi değişken desteği, Alias tip olmak koşulu ve sadece okunabilir kalması şartı ile desteklenmekte.
Örnek-5:
Öncelikle girdi parametre olarak tablo tipi değişken kabul eden(girdi değişkeni select eden basit bir örnek) kodlayalım:
USE Test
GO
CREATE PROC TableTipAlanSp(@ogrenciListesi AS dbo.Ogrenci READONLY)
AS
BEGIN
SELECT * FROM @ogrenciListesi;
END
Ve daha sonra, bu prosedürü kullanalım:
DECLARE @ogrenciListesi AS dbo.Ogrenci
INSERT INTO @ogrenciListesi
VALUES(1,'Ali'), (2,'veli'), (3,'Gülçin') ;
EXEC TableTipAlanSp @ogrenciListesi ;

Şekil:Tablo türünden bir alias tip kullanarak, tablo tipi değişkeni girdi parametre olarak kabul eden bir prosedür ve kullanımı.
Gelecek Bölümlerde:
- Tarih ve Zaman ile ilgili yenilikler
- Hiyerarşik Verilerle İlgili Yenilikler
- Gruplama Hakkında Yenilikler
- Merge İfadesi, Seyrek Sütunlar, Filtreli İndeksler ve İstatistikler