Makale Özeti

Normal şartlarda veritabanı işlemede ANSI SQL dediğimiz standart dil kullanılmaktadır. Lakin bu dil karmaşık işlemler gerçekleştirmeyi, örneğin bir if...else yapısı, while döngüsü gibi fonksiyonları ve değişken tanımalamayı desteklememektedir. Bu durumda yapılması gereken farklı bir programlama dili öğrenmek ve bu vasıtayla bu işlevleri yerine getiren ara programlar yazmaktır. T-SQL dil yapısı tüm bu fonksiyon ve karmaşık işlemleri SQL Server uzayında yapabilmek adına geliştirilmiş standart dışı bir dildir.

Makale

T-SQL Komutları

Normal şartlarda veritabanı işlemede ANSI SQL dediğimiz standart dil kullanılmaktadır. Lakin bu dil karmaşık işlemler gerçekleştirmeyi, örneğin bir if...else yapısı, while döngüsü gibi fonksiyonları ve değişken tanımalamayı desteklememektedir. Bu durumda yapılması gereken farklı bir programlama dili öğrenmek ve bu vasıtayla bu işlevleri yerine getiren ara programlar yazmaktır. T-SQL dil yapısı tüm bu fonksiyon ve karmaşık işlemleri SQL Server uzayında yapabilmek adına geliştirilmiş standart dışı bir dildir.

DEĞİŞKENLER
T-SQL kullanmanın en büyük sebeplerinden biri değişken kullanımına olanak tanımasıdır. Burada kastımız olan değişken diğer tüm programlama dillerinde yer alan bir veri tipi ile sınırlandırılmış, yaratılmasının ardından hafızada belli bir yer kaplayan, üzerine veri ataması yapılabilen ve daha sonra ismi kullanılarak program içersinden çağrılıp kullanılabilecek yapıdır. Yazım şekli :

declare @degisken_adi <veri_tipi> [(boyut)]

şeklindedir.

Örnek :
declare @fld_arac_no VarChar(30)
declare @fld_id int


Değişkene bir gerçek karşılık atanması durumunda değişkene değer atama denir. SET komutu kullanılır. Değişkene atanan değer programın ilerleyen aşamalarında farklı bir değer ile değiştirilebilir. Yeni değerin atanmasının ardından eski değer yok olur.

Örnek :
declare @fld_arac_no VarChar(30)
Set @fld_arac_no = 40
Set @fld_arac_no = 50
//Araç No artık "50" değerinde

SİSTEM FONKSİYONLARI
Veritabanlarında sistem oturum bazında çalışır ve birden fazla oturumu destekleyebilirler. Değişkenler oturum bazında değer alırlar. Bazen tek bir oturum yerine tüm oturumlarda değer alabilecek ve değer döndürebilecek yapılara ihtiyac duyulur. Bu nedenle SQL Server sistem fonksiyonları barındırır.

Yazımı;
Select @@<fonksiyon_adi>

Örnek :
Sql serverda açık connection sayısını almak için sistemde daha önce tanımlanmış olan fonk. çalıştırmak.

Select @@connections;

Bize döndüreceği sonuç;
>>1

şeklindedir.

PRINT KOMUTU
Değişken durumları, prosedur sonuçları,işlem sonuçları gibi verileri ekrana yazdırmak istediğimizde bu komutu kullanırız.

Örnek :
Declare @Toplam int
Select @Toplam = Count(*) from TBL_ARACLAR
Print @Toplam
GO

Bu işlemin bize döndüreceği sonuç TBL_ARACLARdaki kayıt sayısıdır ve ekrana aynen yazılır.

AKIŞ KONTROLLERİ
ANSI SQLde bulunmayan bu yapı bir programlama dili kadar geniş ve etkin kullanıma yetmesede ANSI SQLe nazaran daha geniş sorgular ve sonuçlar çıkarmanızı sağlayacaktır. T-SQL akış kontrolleri BEGIN ile başlayıp END ile bitmektedir.

Genel Kullanımı;

BEGIN
//Program Kodları
END

AÇIKLAMA SATIRLARI
T-SQLde bir satırın dikkate alınmamasını istiyorsanız "--" kullanabilir yada /*........*/ kullanabilirsiniz. Query Analizer de çalışırken "//" yapısından sonra gelen alan da dikkate alınmayacaktır.

IF......ELSE
Klasik şartlı ifade kontrolü olan If....Else bloğu T-SQL tarafından da desteklenmektedir. Genel Kullanımı;

IF(//Şartlar)

   BEGIN
      //Program Kodları
   END
ELSE IF(
//Şartlar)

   BEGIN
      //Program Kodları
   END


şeklindedir.

Declare @fld_Arac_Model int
Select @fld_Arac_Model = Max(fld_Arac_Model) From TBL_ARACLAR
If (@fld_Arac_Model = 123)
   BEGIN
      Print "Bu Aracın Markası XXXXX"
   END
Else If(@fld_Arac_Model = 124)
   BEGIN
      Print "Bu Aracın Markası YYYYYY"
   END
GO


GO
Sql Server birden fazla işlemi aynı talep içinde cevaplayabilir. GO komutu Sql Servera gönderilen komut dizisinin sonunu belirtmek için kullanılır. Aslında T-SQLin bir parçası olmayan kod Sql Server Query Analizer tarafından da algılanır.

Dikkat edilmesi gerekenler :
- 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. Zira daha önceki kod yığınının sona erdiğini belirtmektedir.
- Kodun sonunda GO kullanılmadığı sürece komutlar sunucuya gönderilmez.


CASE
Kısa kod blokları kullanmamıza olanak tanır. Genel kullanımı ;

CASE
WHEN <case_sarti> THEN <case_degeri>
ELSE <case_degeri>
END

Örneğin araç modelinin 100den büyük olması durumunda "Pahalı", küçük olması durumunda "Ucuz" yazdıralım

Select fld_Arac_No, fld_Arac_Mode =
case
   when fld_Arac_No > 100 Then Pahalı
   when fld_Arac_No < 100 Then Ucuz
End
From TBL_ARACLAR

WHILE DÖNGÜSÜ
Şart sağlanıncaya kadar tekrar etmesi gereken bir kod bloğumuz var ise kullanabileceğimiz alandır. Örneğin bir değişken yaratıp değeri 20 olana kadar artırmamız gereken durumlarda

Genel Kullanımı ;

While <While_Sarti>
Begin
//tekrarlanacak Kod Bloğu
End

şeklindedir.

Örneğin bir "i" değişkeni tanımlayalım integer tipinde ve 10 olana kadar artıralım ve 10 olduğunda ekrana son değerini yazdıralım.

Declare @i int
Select @i = 1

While (@i < 10)
   Begin
      Select @i = @i + 1
   End
Print @i



Evren AYAN
www.evrenayan.net