SQL List Değişken Tanımlama

SQL List Değişken Tanımlama

MS SQL de scalar tek değer tutan değişken tanımlamanın yanı sıra çok boyutlu veya list değişkende tanımlayabiliriz. Bazı durumlarda SQL sorgu sonucu elde edilen sonucu bir tabloya aktarmak ve bu tablo tek başına veya başka tablolar ile join yaparak kullanım ihtiyacı olabilir. Burada elde edilen sorgu sonucu INTO ile bir tabloya doldurulabilir. Ancak hem tablo oluşturma yetkisi derekli hemde bu tabloları silmek gerekli olduğu için çok kullanışlı bir yöntem değildir. Diğer bir yöntemde INTO #ifadesi ile bir yerel geçici bir tablo oluşturma bu tabloyu oluşturan kullanıcı oturumu kpatınca silinir. BiÖnceki yönteme göre daha avantajlıdır. En ideal yöntem ise list tipinde bir değişken oluşturup burada kullanmak böylece fiziksel olarak tablo kullanma ihtiyacı kalmaz.

---SCALAR DEĞİŞKEN
DECLARE @ADI AS NVARCHAR(10)
SET @ADI='DENEME'
SELECT @ADI

--SONUÇ
DENEME

---1 FİZİK TABLO

SELECT ADI,SOYADI INTO TMP_TABLO FROM TABLO WHERE ID IN (1,2)
SELECT * FROM TMP_SIL

---FİZİKİ GEÇİCİ TABLO OLUŞTURMA
SELECT ADI,SOYADI INTO #TMP_TABLO FROM TABLO WHERE ID IN (1,2)
SELECT * FROM TMP_SIL

---LİST DEĞİŞKEN
DECLARE @MUSTERI TABLE (ID INT,ADI NVARCHAR(10),SOYADI VARCHAR(20))
INSERT INTO @MUSTERI
VALUES
(1,'DENEME01','DENEK01') ,
(2,'DENEME02','DENEK02') ,
(3,'DENEME02','DENEK03')
SELECT ID,ADI,SOYADI FROM @MUSTERI 

ID ADI SOYADI
1 DENEME01 DENEK01
2 DENEME02 DENEK02
3 DENEME02 DENEK03

---SQL LIST VERI TIPI  Aşağıdaki sorgular mutlaka Declare ifadeleri ile beraber çalıştırılması gerek.

DECLARE @Gunler TABLE(Sira INT,Gun VARCHAR(40))
DECLARE @GunlerEnglish TABLE(Sira INT,GunENG VARCHAR(40))

INSERT INTO @Gunler
VALUES
(1,'Pazartesi') ,
(2,'Salı') ,
(3,'Çarşamba') ,
(4,'Perşembe'),
(5,'Cuma'),
(6,'Cumartesi'),
(7,'Pazar')

INSERT INTO @GunlerEnglish
VALUES
(1,'Monday') ,
(2,'Tuesday'),
(3,'Wednesday') ,
(4,'Friday'),
(5,'Friday'),
(6,'Saturday'),
(7,'Sunday')

SELECT * FROM @Gunler

Sira Gun
1 Pazartesi
2 Sali
3 Çarsamba
4 Persembe
5 Cuma
6 Cumartesi
7 Pazar

SELECT * FROM @GunlerEnglish 

Sira GunENG
1 Monday
2 Tuesday
3 Wednesday
4 Friday
5 Friday
6 Saturday
7 Sunday

SELECT [@Gunler].Sira,Gun,GunENG
FROM @Gunler
INNER JOIN @GunlerEnglish ON [@Gunler].Sira=[@GunlerEnglish].Sira 

Sira Gun GunENG
1 Pazartesi Monday
2 Sali Tuesday
3 Çarsamba Wednesday
4 Persembe Friday
5 Cuma Friday
6 Cumartesi Saturday
7 Pazar Sunday

 


İlgili Yazılar