Tablo Tipi Değişkenler
Tablo tipi değişkenler ile aynı anda birden fazla değer tutabiliriz. Bunu ister programlamada dizilere ister listelere benzetin tam olarak aynısı değildir. Biz bunlara geçici tablolar dersek yanılmayız.
|
1 |
DECLARE @DEGISKEN_ADI TABLE( DEGISKEN_ADI VERITIPI, DEGISKEN_ADI VERITIPI, ...) |
Kullanım şekli yukarıda gözüktüğü gibidir. Değişken adından sonra TABLE ifadesi yazılması gerektiğini ve parantezden sonra y azılan değişken adlarının önüne “@” işareti eklenmediğine dikkat edin.
|
1 2 3 4 5 6 7 8 9 10 |
DECLARE @OGRENCI TABLE( --Tablo tipi değişken tanımlandı OKUL_NO INT PRIMARY KEY IDENTITY(1,1), --birincil anahtar ve 1 ile başlayıp birer artan OKUL_NO değişkeni OGRENCI_ADI VARCHAR(50) NOT NULL, --50 karaktere kadar izin veren ve boş geçilemeyen(NOT NULL) OGRENCI_ADI değişkeni TELEFON BIGINT) -- BIGINT tipinde TELEFON değişkeni INSERT INTO @OGRENCI VALUES('Onur Arslan',5555555555) --OGRENCI tablo değişkenine değer ekleniyor INSERT INTO @OGRENCI(OGRENCI_ADI) VALUES('Wesley Sneijder') --OGRENCI tablo değişkenine değer ekleniyor SELECT * FROM @OGRENCI --OGRENCI tablo değişkeninde bulunan tüm kayıtları getir SELECT * FROM @OGRENCI WHERE OGRENCI_ADI LIKE 'O%' --OGRENCI tablo değişkeninde OGRENCI_ADI değişkeni sütunuda bulunan kayıtların 'O' harfi ile başlayanları getir |
Yukarıda ki sorgularda bir tablo değişkeni ve bu değişkene ait farklı veritiplerinde 3 adet değişken oluşturuldu. Tablo değişkenine kayıtlar eklenerek ardından SELECT sorgusu ile ekrana yazdırıldı.
Sorgunun ekran görüntüsü SELECT sırasına göre yukarıda olduğu gibidir.
Output İşlemi
Output işlemi ile sorgular sonucunda etkilenen kayıtları tutarak bir tabloya veya tablo değişkeninde saklayabilirsiniz. Örneğin 2015 yılında mezun olan öğrencileri OGRENCI tablosundan silip MEZUN adlı bir tabloya veya tablo değişkenine ekleyebilirsiniz.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DECLARE @HESAPLAR_TABLO_DEGISKENI TABLE(HESAP_NO INT, BAKIYE INT) --tablo değişkeni ve alt değişkenler tanımlandı INSERT INTO HESAPLAR --HESAPLAR tablosune ekle OUTPUT INSERTED.HESAP_NO, INSERTED.BAKIYE --HESAP_NO ve BAKIYE sütunlarına eklenenleri OUTPUT ile sakla INTO @HESAPLAR_TABLO_DEGISKENI --OUTPUT ile saklananları tablo değişkenine ekle VALUES(3543, 2350) -- eklenen değerler SELECT * FROM @HESAPLAR_TABLO_DEGISKENI --Tablo değişkeninde ki tüm kayıtları getir SELECT * FROM HESAPLAR --Tabloda ki tüm kayıtları getir DELETE FROM HESAPLAR --HESAPLAR tablosundan sil OUTPUT DELETED.HESAP_NO, DELETED.BAKIYE --HESAP_NO ve BAKIYE sütunlarından silinenleri OUTPUT ile sakla INTO @HESAPLAR_TABLO_DEGISKENI --Silinen kayıtları tablo değişkenine ekle WHERE BAKIYE<1500 -- BAKIYE sütununda 1500'den küçük kayıtlar SELECT * FROM @HESAPLAR_TABLO_DEGISKENI --Tablo değişkeninde ki tüm kayıtları getir SELECT * FROM HESAPLAR --Tabloda ki tüm kayıtları getir |
Yukarıda ki kodlarda 3543 HESAP_NO ve 2350 BAKIYE bilgili bir kayıt eklendi ve eklenen kayıt OUTPUT işlemine tutularak tablo değişkenine eklendi. Eklenen kayıtlar tablo değişkeni ve tablo için ayrı ayrı ekrana getirtildi.
Sonraki işlemde ise HESAPLAR tablosundan BAKIYE bilgisi 1500’den küçük olan kayıtları sil ve silinen kayıtları tablo değişkenine ekle komutu verildi. Yine değişiklikden etkilenen kayıtlar ayrı ayrı sorgulanarak aşağıda ki gibi ekrana getirilmesi sağlandı.
OUTPUT işleminde dikkat etmeniz gereken nokta kayıt eklenirken INSERTED, kayıt silinirken DELETED ifadelerinin tablo sütun isimlerinin önüne getirilmesidir. Etkilenen kayıtları INTO ile tablo değişkenine veya tabloya ekleyebilirsiniz.







