SQL Değişkenleri: SQL Server'da Değişken Tanımlama, Ayarlama ve Seçme
⚡ Akıllı Özet
SQL Server değişkenleri, bellekte tek bir veri değeri için yer tutucu görevi gören adlandırılmış nesnelerdir. Bir değişkene değer atanabilmesi ve yeniden kullanılabilmesi için öncelikle DECLARE ifadesiyle tanımlanması gerekir.
SQL Server'da Değişken Nedir?
In MS SQL ServerDeğişkenler, bellek konumları için yer tutucu görevi gören nesnelerdir. Bir değişken, bir işlem veya prosedür boyunca okuyabileceğiniz ve yeniden kullanabileceğiniz tek bir veri değeri tutar.
SQL'de Değişken Türleri: Yerel, Global
MS SQL Server'da iki tür değişken vardır:
- Yerel değişken
- Küresel değişken
Ancak, bir kullanıcı yalnızca yerel değişken oluşturabilir. Aşağıdaki şekil, MS SQL Server'da bulunan iki değişken türünü açıklamaktadır.
Yerel değişken
- Kullanıcı yerel değişkeni bildirir.
- Varsayılan olarak, yerel değişken adları @ işaretiyle başlar.
- Her yerel değişken, belirli bir oturum içindeki geçerli toplu işlem veya prosedürle sınırlıdır.
Küresel değişken
- Sistem global değişkeni yönetir; kullanıcı böyle bir değişken tanımlayamaz.
- Küresel değişken adları @@ ile başlar.
- Oturumla ilgili bilgileri saklar.
SQL'de bir değişken nasıl DECLARE edilir?
Bir toplu işlemde veya prosedürde herhangi bir değişkeni kullanmadan önce... SQLBunu mutlaka bildirmelisiniz. DECLARE komutu, bellek konumu için yer tutucu görevi gören bir değişken oluşturur. Değişken, ancak bildirim yapıldıktan sonra toplu işlemin veya prosedürün sonraki bölümünde kullanılabilir.
TSQL Sözdizimi:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Kurallar:
- Tanımlama sırasında başlatma işlemi isteğe bağlıdır.
- Varsayılan olarak, DECLARE komutu değişkeni NULL olarak başlatır.
- 'AS' anahtar kelimesini kullanmak isteğe bağlıdır.
- Birden fazla yerel değişken tanımlamak için, ilk tanımdan sonra virgül ekleyin, ardından sonraki değişken adını verin ve veri tipi.
Değişken bildirme örnekleri
Sorgu: 'AS' ile
DECLARE @COURSE_ID AS INT;
Sorgu: 'AS' olmadan
DECLARE @COURSE_NAME VARCHAR (10);
Sorgu: İki değişkeni DECLARE
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
SQL Değişkenine değer atama
Bir değişkene aşağıdaki üç şekilde değer atayabilirsiniz:
- DECLARE anahtar kelimesi kullanılarak değişken tanımlama sırasında.
- SET kullanarak.
- SELECT kullanarak.
Şimdi bu üç yöntemi de ayrıntılı olarak inceleyelim.
DECLARE anahtar kelimesini kullanarak değişken bildirimi sırasında
T-SQL Söz Dizimi:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Burada, veri türünden sonra '=' işaretini ve atanacak değeri kullanabilirsiniz.
Sorgu:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Sorguyu çalıştırdığınızda, aşağıda gösterildiği gibi, tanımlama sırasında atanan değer yazdırılır.
SQL SET Değişkenini Kullanma
Bazen değişken tanımlama ve başlatma işlemlerini ayrı tutmak isteyebilirsiniz. SET komutu, değişken tanımlandıktan sonra ona bir değer atar. Aşağıda SET kullanarak değer atamanın farklı yolları verilmiştir.
Örnek: SET kullanarak bir değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Sorgu:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Komut dosyasını çalıştırmak, aşağıda gösterildiği gibi SET komutuyla atanan değeri döndürür.
Örnek: SET kullanarak birden fazla değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Kural: Bir SET anahtar kelimesi yalnızca bir değişkene değer atayabilir.
Sorgu:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Aşağıda gösterildiği gibi, iki PRINT ifadesi de atanan değerlerin her ikisini de döndürür.
Örnek: SET kullanarak skalar alt sorgu ile bir değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Kurallar:
- Sorguyu parantez içine alın.
- Sorgu, tek satır ve tek sütun döndüren, yani skalar bir sorgu olmalıdır. Aksi takdirde, sorgu hata verir.
- Sorgu sıfır satır döndürürse, değişken EMPTY yani NULL olarak ayarlanır.
Varsayalım ki elimizde şunlar var: tablo adlı 'GuruAşağıda gösterildiği gibi, iki sütunlu 99'luk bir tablo. Bu tablo aşağıdaki örneklerde kullanılmaktadır.
Örnek 1: Alt sorgunun sonuç olarak tek bir satır döndürmesi
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Alt sorgu yalnızca bir eşleşen satır döndürdüğü için, değişken aşağıdaki gibi bu değeri alır.
Örnek 2: Alt sorgunun sonuç olarak sıfır satır döndürmesi
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Alt sorgu hiçbir satır döndürmediği için değişkenin değeri BOŞ, yani NULL'dur, bu nedenle aşağıda gösterildiği gibi hiçbir şey yazdırılmaz.
SQL SELECT Değişkenini Kullanma
SET komutunda olduğu gibi, DECLARE komutuyla tanımladığınız değişkenlere değer atamak için SELECT komutunu da kullanabilirsiniz. Aşağıda SELECT kullanarak değer atamanın farklı yolları verilmiştir.
Örnek: SELECT kullanarak bir değişkene değer atama
Sözdizimi:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Sorgu:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
SELECT işlemi, aşağıda gösterildiği gibi değeri yazdırır.
Örnek: SELECT kullanarak birden fazla değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Kural: SET'in aksine, SELECT virgülle ayrılmış birden fazla değişkene değer atayabilir.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Aşağıda gösterildiği gibi, her iki değişken de tek bir SELECT sorgusunda atanır.
Örnek: SELECT kullanarak alt sorgu ile bir değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Kurallar:
- Sorguyu parantez içine alın.
- Sorgu, tek satır ve tek sütun döndüren skalar bir sorgu olmalıdır. Aksi takdirde, sorgu hata verir.
- Sorgu sıfır satır döndürürse, değişken BOŞTUR, yani NULL'dur.
'Guru99' masa.
Örnek 1: Alt sorgunun sonuç olarak tek bir satır döndürmesi
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Alt sorgu tek bir satır döndürdüğü için, değişken aşağıdaki gibi o değeri tutar.
Örnek 2: Alt sorgunun sonuç olarak sıfır satır döndürmesi
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Eşleşen satır bulunmadığında, değişken aşağıdaki gibi BOŞ, yani NULL kalır.
Örnek 3: Normal bir SELECT sorgusu kullanarak bir değişkene değer atama
Sözdizimi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Kurallar:
- SET'ten farklı olarak, sorgu birden fazla satır döndürürse, değişken değeri son satırın değerine ayarlanır.
- Sorgu sıfır satır döndürürse, değişken EMPTY yani NULL olarak ayarlanır.
Sorgu 1: Sorgu tek bir satır döndürüyor.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Aşağıda gösterildiği gibi, eşleşen tek satır değişken değerini belirler.
Sorgu 2: Bu sorgu birden fazla satır döndürüyor.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Birden fazla satır eşleştiğinde, değişken aşağıdaki örnekte gösterildiği gibi son satırdaki değeri korur.
Sorgu 3: Sorgu sıfır satır döndürüyor.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Eşleşen satır olmadığında, değişken BOŞ olur, yani aşağıda gösterildiği gibi NULL değerine ulaşır.
Diğer SQL Değişken Örnekleri
Tanımlanmış bir değişken, sorgu içinde de kullanılabilir; örneğin, satırları filtrelemek için bir WHERE yan tümcesinde.
Sorgu:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Bu değişken sorguyu filtreler ve aşağıdaki gibi eşleşen satırı döndürür.
SQL Server Değişkenleri Hakkında İlginç Gerçekler!
- Yerel bir değişken, PRINT komutunun yanı sıra SELECT komutu kullanılarak da görüntülenebilir.
- Tablo veri türü, tanımlama sırasında 'AS' kullanımına izin vermez.
- SET, ANSI standartlarına uygundur, SELECT ise uygun değildir.
- @ adında yerel bir değişken oluşturmak da mümkündür. Örneğin, şu şekilde tanımlanabilir:
'DECLARE @@ as VARCHAR (10)'
















