SQL-Variablen: SQL Server – Deklarieren, Festlegen und Auswählen von Variablen
⚡ Intelligente Zusammenfassung
SQL-Server-Variablen sind benannte Objekte, die als Platzhalter für einen einzelnen Datenwert im Speicher dienen. Eine Variable muss mit der DECLARE-Anweisung deklariert werden, bevor ihr ein Wert zugewiesen und sie wiederverwendet werden kann.

Was ist eine Variable in SQL Server?
In MS SQL ServerVariablen sind Objekte, die als Platzhalter für eine Speicheradresse dienen. Eine Variable speichert einen einzelnen Datenwert, der innerhalb eines Batches oder einer Prozedur gelesen und wiederverwendet werden kann.
Variablentypen in SQL: Lokal, Global
MS SQL Server kennt zwei Arten von Variablen:
- Lokale Variable
- Globale Variable
Ein Benutzer kann jedoch nur eine lokale Variable erstellen. Die folgende Abbildung erläutert die beiden in MS SQL Server verfügbaren Variablentypen.
Lokale Variable
- Ein Benutzer deklariert die lokale Variable.
- Standardmäßig beginnt der Name einer lokalen Variable mit @.
- Jede lokale Variable ist auf den aktuellen Batch oder die aktuelle Prozedur innerhalb einer gegebenen Sitzung beschränkt.
Globale Variable
- Das System verwaltet die globale Variable; ein Benutzer kann keine eigene Variable deklarieren.
- Ein globaler Variablenname beginnt mit @@.
- Es speichert sitzungsbezogene Informationen.
So deklarieren Sie eine Variable in SQL
Bevor Sie eine Variable in einem Batch oder einer Prozedur verwenden SQLSie müssen sie deklarieren. Der Befehl DECLARE erstellt eine Variable, die als Platzhalter für eine Speicheradresse dient. Erst nach der Deklaration kann die Variable im nachfolgenden Teil des Batches oder der Prozedur verwendet werden.
TSQL-Syntax:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regeln:
- Die Initialisierung ist bei der Deklaration optional.
- Standardmäßig initialisiert DECLARE die Variable mit NULL.
- Die Verwendung des Schlüsselworts „AS“ ist optional.
- Um mehr als eine lokale Variable zu deklarieren, fügen Sie nach der ersten Definition ein Komma ein und geben Sie dann den Namen der nächsten Variable an. Datentyp.
Beispiele für die Deklaration einer Variablen
Abfrage: Mit 'AS'
DECLARE @COURSE_ID AS INT;
Abfrage: Ohne 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Abfrage: DECLARE zwei Variablen
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Zuweisen eines Werts zur SQL-Variablen
Einer Variablen kann auf drei Arten ein Wert zugewiesen werden:
- Bei der Variablendeklaration mit dem Schlüsselwort DECLARE.
- Verwendung von SET.
- Verwendung von SELECT.
Lassen Sie uns alle drei Wege im Detail betrachten.
Während der Variablendeklaration mit dem Schlüsselwort DECLARE
T-SQL-Syntax:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Hier können Sie nach dem Datentyp ein '=' gefolgt vom zuzuweisenden Wert verwenden.
Abfrage:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Die Ausführung der Abfrage gibt den bei der Deklaration zugewiesenen Wert aus, wie unten dargestellt.
Verwendung von SQL-SET-Variablen
Manchmal ist es sinnvoll, Deklaration und Initialisierung zu trennen. Mit `SET` wird einer Variablen nach ihrer Deklaration ein Wert zugewiesen. Im Folgenden werden die verschiedenen Möglichkeiten zur Wertzuweisung mit `SET` beschrieben.
Beispiel: Zuweisen eines Wertes zu einer Variablen mithilfe von SET
Syntax:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Abfrage:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Die Ausführung des Skripts gibt den mit SET zugewiesenen Wert zurück, wie unten dargestellt.
Beispiel: Mehreren Variablen mit SET einen Wert zuweisen
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regel: Mit dem Schlüsselwort SET kann nur einer einzigen Variablen ein Wert zugewiesen werden.
Abfrage:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Die beiden PRINT-Anweisungen geben beide zugewiesenen Werte zurück, wie unten dargestellt.
Beispiel: Zuweisen eines Wertes zu einer Variablen mithilfe einer skalaren Unterabfrage und SET
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Regeln:
- Setzen Sie die Abfrage in Klammern.
- Die Abfrage sollte eine skalare Abfrage sein, d. h. sie sollte genau eine Zeile und eine Spalte zurückgeben. Andernfalls führt die Abfrage zu einem Fehler.
- Wenn die Abfrage null Zeilen zurückgibt, wird die Variable auf EMPTY, also NULL, gesetzt.
Angenommen, wir haben die Tabelle genannt 'Guru99' mit zwei Spalten, wie unten dargestellt. Diese Tabelle wird in den folgenden Beispielen verwendet.
Beispiel 1: Wenn die Unterabfrage eine Zeile als Ergebnis zurückgibt
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Da die Unterabfrage genau eine übereinstimmende Zeile zurückgibt, erhält die Variable diesen Wert, wie unten dargestellt.
Beispiel 2: Wenn die Unterabfrage null Zeilen als Ergebnis zurückgibt
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Da die Unterabfrage keine Zeilen zurückgibt, ist der Wert der Variablen LEER, also NULL, sodass nichts ausgegeben wird, wie unten gezeigt.
Verwendung der SQL-SELECT-Variable
Genau wie bei SET können Sie auch SELECT verwenden, um Variablen Werte zuzuweisen, nachdem Sie sie mit DECLARE deklariert haben. Im Folgenden finden Sie verschiedene Möglichkeiten, mit SELECT einen Wert zuzuweisen.
Beispiel: Zuweisen eines Wertes zu einer Variablen mithilfe von SELECT
Syntax:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Abfrage:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Die SELECT-Anweisung gibt den Wert wie unten gezeigt aus.
Beispiel: Mehreren Variablen mit SELECT einen Wert zuweisen
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regel: Im Gegensatz zu SET kann SELECT mehreren, durch Kommas getrennten Variablen einen Wert zuweisen.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Beide Variablen werden in einer einzigen SELECT-Anweisung zugewiesen, wie unten gezeigt.
Beispiel: Zuweisen eines Wertes zu einer Variablen mithilfe einer Unterabfrage mit SELECT
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Regeln:
- Setzen Sie die Abfrage in Klammern.
- Die Abfrage sollte eine skalare Abfrage sein, die eine Zeile und eine Spalte zurückgibt. Andernfalls wird ein Fehler ausgelöst.
- Wenn die Abfrage null Zeilen zurückgibt, dann ist die Variable LEER, also NULL.
Überdenken Sie unsere 'Guru99'-Tisch.
Beispiel 1: Wenn die Unterabfrage eine Zeile als Ergebnis zurückgibt
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Die Unterabfrage gibt eine Zeile zurück, daher enthält die Variable diesen Wert, wie unten gezeigt.
Beispiel 2: Wenn die Unterabfrage null Zeilen als Ergebnis zurückgibt
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Wenn keine passende Zeile gefunden wird, bleibt die Variable LEER, also NULL, wie unten dargestellt.
Beispiel 3: Einer Variablen mit einer regulären SELECT-Anweisung einen Wert zuweisen
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Regeln:
- Im Gegensatz zu SET wird bei einer Abfrage, die mehrere Zeilen zurückgibt, der Wert der Variablen auf den Wert der letzten Zeile gesetzt.
- Wenn die Abfrage null Zeilen zurückgibt, wird die Variable auf EMPTY, also NULL, gesetzt.
Abfrage 1: Die Abfrage gibt eine Zeile zurück.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Die einzelne übereinstimmende Zeile legt den Variablenwert fest, wie unten dargestellt.
Abfrage 2: Die Abfrage gibt mehrere Zeilen zurück.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Wenn mehrere Zeilen übereinstimmen, behält die Variable den Wert aus der letzten Zeile bei, wie unten dargestellt.
Abfrage 3: Die Abfrage liefert null Zeilen.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Wenn keine Zeilen übereinstimmen, ist die Variable LEER, also NULL, wie unten dargestellt.
Weitere Beispiele für SQL-Variablen
Eine deklarierte Variable kann auch innerhalb einer Abfrage verwendet werden, beispielsweise in einer WHERE-Klausel zum Filtern von Zeilen.
Abfrage:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Die Variable filtert die Abfrage und gibt die übereinstimmende Zeile zurück, wie unten dargestellt.
Interessante Fakten über SQL Server-Variablen!
- Eine lokale Variable kann sowohl mit dem Befehl PRINT als auch mit dem Befehl SELECT angezeigt werden.
- Der Tabellendatentyp erlaubt die Verwendung von 'AS' bei der Deklaration nicht.
- SET entspricht den ANSI-Standards, SELECT hingegen nicht.
- Es ist auch zulässig, eine lokale Variable mit dem Namen @ zu erstellen. Sie kann beispielsweise wie folgt deklariert werden:
'DECLARE @@ as VARCHAR (10)'















