SQL-Variablen: SQL Server-Variable deklarieren, festlegen und auswählen

Was ist eine Variable in SQL Server?

In MS SQL sind Variablen Objekte, die als Platzhalter für einen Speicherort dienen. Die Variable enthält einen einzelnen Datenwert.

Variablentypen in SQL: Lokal, Global

MS SQL verfügt über zwei Arten von Variablen:

  1. Lokale Variable
  2. Globale Variable.

Der Benutzer kann jedoch nur eine lokale Variable erstellen.

Die folgende Abbildung erläutert zwei Arten von Variablen, die in verfügbar sind MS SQL-Server.

SQL-Variablen
Art der Variablen in SQL Server

Lokale Variable

  • Ein Benutzer deklariert die lokale Variable.
  • Standardmäßig beginnt eine lokale Variable mit @.
  • Jeder lokale Variablenbereich hat die Einschränkung auf aktuelle Charge oder Prozedur innerhalb einer bestimmten Sitzung.

Globale Variable

  • Das System verwaltet die globale Variable. Ein Benutzer kann sie nicht deklarieren.
  • Die globale Variable beginnt mit @@
  • Es speichert sitzungsbezogene Informationen.

So deklarieren Sie eine Variable in SQL

  • Bevor Sie eine Variable in einem Batch oder einer Prozedur verwenden, müssen Sie dies tun Deklarieren Sie die Variable.
  • Der Befehl DECLARE wird zum DECLARE einer Variablen verwendet, die als Platzhalter für den Speicherort fungiert.
  • Erst wenn die Deklaration erfolgt ist, kann eine Variable im nachfolgenden Teil eines Batches oder einer Prozedur verwendet werden.

TSQL-Syntax:

DECLARE  { @LOCAL_VARIABLE[AS] data_type  [ = value ] }

Regeln:

  • Die Initialisierung ist bei der Deklaration eine optionale Sache.
  • Standardmäßig initialisiert DECLARE die Variable auf NULL.
  • Die Verwendung des Schlüsselworts „AS“ ist optional.
  • Um mehr als eine lokale Variable zu deklarieren, verwenden Sie nach der ersten lokalen Variablendefinition ein Komma und definieren Sie dann den Namen und die nächste lokale Variable 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

Sie können einer Variablen wie folgt einen Wert zuweisen: nach drei Wege:

  1. Während der Variablendeklaration mit dem Schlüsselwort DECLARE.
  2. Mit SET
  3. Mit SELECT

Schauen wir uns alle drei Möglichkeiten im Detail an:

Während der Variablendeklaration mit dem Schlüsselwort DECLARE

T-SQL-Syntax:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

Hier können wir nach dem Datentyp „=“ gefolgt vom zuzuweisenden Wert verwenden

Abfrage:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

Zuweisen eines Werts zur SQL-Variablen

Verwenden von SQL SET VARIABLE

Manchmal möchten wir Deklaration und Initialisierung getrennt halten. SET kann verwendet werden, um der Variablen Werte zuzuweisen, nachdem eine Variable deklariert wurde. Nachfolgend sind die verschiedenen Möglichkeiten aufgeführt, Werte mit SET zuzuweisen:

Beispiel: Einer Variablen mit SET einen Wert zuweisen

Syntax:

DECLARE @Local_Variable <Data_Type>
SET @Local_Variable =  <Value>

Abfrage:

DECLARE @COURSE_ID AS INT
SET @COURSE_ID = 5
PRINT @COURSE_ID

SQL-SET-VARIABLE

Beispiel: Weisen Sie einen Wert zu mehrere Variablen mit SET.

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: Ein SET-Schlüsselwort kann nur zum Zuweisen eines Werts verwendet werden eine Variable.

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

SQL-SET-VARIABLE

Beispiel: Zuweisen eines Werts zu einer Variablen mit a Skalare Unterabfrage mit 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:

  • Schließen Sie die Abfrage in Klammern ein.
  • Die Abfrage sollte eine Skalarabfrage sein. Eine Skalarabfrage ist eine Abfrage, deren Ergebnisse nur aus einer Zeile und einer Spalte bestehen. Andernfalls wird bei der Abfrage ein Fehler ausgegeben.
  • Wenn die Abfrage keine Zeilen zurückgibt, wird die Variable auf EMPTY, also NULL, gesetzt.

Annahme: Nehmen wir an, wir haben die Tabelle „Guru99“ mit zwei Spalten, wie unten dargestellt:

SQL-SET-VARIABLE

In den weiteren Tutorials werden wir die Tabelle „Guru99“ verwenden

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

SQL-SET-VARIABLE

Beispiel 2: Wenn die Unterabfrage als Ergebnis eine Nullzeile zurückgibt

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

In diesem speziellen Fall ist der Variablenwert EMPTY, also NULL.

SQL-SET-VARIABLE

Verwenden von SQL SELECT VARIABLE

Genau wie SET können wir auch SELECT verwenden, um den Variablen Werte zuzuweisen, nachdem wir eine Variable mit DECLARE deklariert haben. Im Folgenden finden Sie verschiedene Möglichkeiten, mit SELECT einen Wert zuzuweisen:

Beispiel: Einer Variablen mit SELECT einen Wert zuweisen

Syntax:

DECLARE @LOCAL_VARIABLE <Data_Type>
SELECT @LOCAL_VARIABLE = <Value>

Abfrage:

DECLARE @COURSE_ID INT
SELECT @COURSE_ID = 5
PRINT @COURSE_ID

SQL-SELECT-VARIABLE

Beispiel: Zuweisen eines Werts zu mehreren Variablen mithilfe von SELECT

Syntax:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>,  @Local_Variable _2 = <Value_2>

Regeln: Im Gegensatz zu SET kann mit SELECT ein Wert zugewiesen werden auf mehrere Variablen getrennt durch die Komma.

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

SQL-SELECT-VARIABLE

Beispiel: Zuweisen des Werts zu einer Variablen mit einer Unterabfrage mithilfe von 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:

  • Schließen Sie die Abfrage in Klammern ein.
  • Die Abfrage sollte eine Skalarabfrage sein. Die Skalarabfrage ist die Abfrage, deren Ergebnis eine Zeile und eine Spalte ist. Andernfalls gibt die Abfrage einen Fehler aus.
  • Wenn die Abfrage keine Zeilen zurückgibt, ist die Variable LEER, also NULL.
  • Überdenken Sie unsere Tabelle „Guru99“.

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

SQL-SELECT-VARIABLE

Beispiel 2: Wenn die Unterabfrage als Ergebnis eine Nullzeile zurückgibt

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

In diesem speziellen Fall ist die Variable EMPTY, also NULL.

SQL-SELECT-VARIABLE

Beispiel 3: Weisen Sie einer Variablen mit einer regulären SELECT-Anweisung einen Wert zu.

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 der Variablenwert auf den Wert der letzten Zeile gesetzt, wenn die Abfrage mehrere Zeilen ergibt.
  • Wenn die Abfrage keine 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

SQL-SELECT-VARIABLE

Abfrage 2: Die Abfrage gibt mehrere Zeilen zurück.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

In diesem speziellen Fall ist der Variablenwert auf den Wert der letzten Zeile gesetzt.

SQL-SELECT-VARIABLE

Abfrage 3: Die Abfrage gibt null Zeilen zurück.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

In diesem speziellen Fall ist die Variable EMPTY, also NULL.

SQL-SELECT-VARIABLE

Weitere Beispiele für SQL-Variablen

Variable in der Abfrage verwenden

Abfrage:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

Andere SQL-Variable

Interessante Fakten über SQL Server-Variablen!

  • Eine lokale Variable kann sowohl mit PRINT als auch mit SELECT COMMAND angezeigt werden.
  • Der Tabellendatentyp lässt die Verwendung von „AS“ während der Deklaration nicht zu.
  • SET entspricht den ANSI-Standards, SELECT hingegen nicht.
  • Das Erstellen einer lokalen Variablen mit dem Namen @ ist ebenfalls zulässig. Wir können es zum Beispiel so deklarieren:
    'DECLARE @@ as VARCHAR (10)'
    

Zusammenfassung

  • Variablen sind das Objekt, das als Platzhalter fungiert.
  • Es gibt zwei Arten von Variablen: Lokal und Global
  • Wir können die Variable auf folgende drei Arten zuweisen: Mit 1) DECLARE 2) Mit SET 3) MIT SELECT

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: