SQL-variabler: SQL Server-deklarera, ställ in och välj variabel

Vad är en variabel i SQL Server?

I MS SQL är variabler det objekt som fungerar som en platshållare till en minnesplats. Variabelt håller ett enda datavärde.

Variabeltyper i SQL: Lokalt, Globalt

MS SQL har två typer av variabler:

  1. Lokal variabel
  2. Global variabel.

Användaren kan dock bara skapa en lokal variabel.

Nedan figur förklarar två typer av variabler tillgängliga i MS SQL server.

SQL-variabler
Typ av variabler i SQL Server

Lokal variabel

  • En användare deklarerar den lokala variabeln.
  • Som standard börjar en lokal variabel med @.
  • Varje lokal variabel omfattning har begränsningen till nuvarande batch eller procedur inom en given session.

Global variabel

  • Systemet upprätthåller den globala variabeln. En användare kan inte deklarera dem.
  • Den globala variabeln börjar med @@
  • Den lagrar sessionsrelaterad information.

Hur man DEKLÄRERAR en variabel i SQL

  • Innan du använder någon variabel i batch eller procedur måste du deklarera variabeln.
  • DECLARE-kommandot används för att DECLARE variabel som fungerar som en platshållare för minnesplatsen.
  • Först när deklarationen är gjord kan en variabel användas i den efterföljande delen av satsen eller förfarandet.

TSQL-syntax:

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

regler:

  • Initiering är en valfri sak när du deklarerar.
  • Som standard initierar DECLARE variabeln till NULL.
  • Att använda nyckelordet 'AS' är valfritt.
  • För att deklarera mer än en lokal variabel, använd ett kommatecken efter den första lokala variabeldefinitionen och definiera sedan nästa lokala variabelnamn och data typ.

Exempel på att deklarera en variabel

Fråga: Med 'AS'

DECLARE @COURSE_ID AS INT;

Fråga: Utan 'AS'

DECLARE @COURSE_NAME VARCHAR (10);

Fråga: DEKLARERA två variabler

DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);

Tilldela ett värde till SQL-variabel

Du kan tilldela ett värde till en variabel i det följande tre sätt:

  1. Under variabeldeklaration med nyckelord DECLARE.
  2. Använder SET
  3. Använd SELECT

Låt oss ta en titt på alla tre sätten i detalj:

Under variabeldeklaration med nyckelord DECLARE

T-SQL-syntax:

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

Här, efter datatyp, kan vi använda '=' följt av värde som ska tilldelas

Fråga:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

Tilldela ett värde till SQL-variabel

Använder SQL SET VARIABLE

Ibland vill vi hålla deklaration och initiering åtskilda. SET kan användas för att tilldela värden till variabeln, efter att deklarera en variabel. Nedan finns de olika sätten att tilldela värden med SET:

Exempelvis: Tilldela ett värde till en variabel med SET

Syntax:

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

Fråga:

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

SQL SET VARIABEL

Exempelvis: Tilldela ett värde till flera variabler med hjälp av 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: Ett SET-nyckelord kan endast användas för att tilldela ett värde en variabel.

Fråga:

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 VARIABEL

Exempelvis: Tilldela ett värde till en variabel med en Skalär delfråga med hjälp av 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>)

regler:

  • Bifoga frågan inom parentes.
  • Frågan ska vara en skalär fråga. En skalär fråga är en fråga med resultat som bara en rad och en kolumn. Annars kommer frågan att ge ett fel.
  • Om frågan returnerar noll rader ställs variabeln in på EMPTY, dvs NULL.

Antagande: Antag att vi har tabellen som 'Guru99' med två kolumner som visas nedan:

SQL SET VARIABEL

Vi kommer att använda tabellen "Guru99" i de ytterligare handledningarna

Exempel 1: När subquery returnerar en rad som ett resultat.

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

SQL SET VARIABEL

Exempel 2: När subquery returnerar nollrad som ett resultat

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

I detta speciella fall är variabelvärdet EMPTY, dvs NULL.

SQL SET VARIABEL

Använder SQL SELECT VARIABLE

Precis som SET kan vi också använda SELECT för att tilldela värden till variablerna, efter att deklarera en variabel med DECLARE. Nedan finns olika sätt att tilldela ett värde med SELECT:

Exempelvis: Tilldela ett värde till en variabel med SELECT

Syntax:

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

Fråga:

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

SQL VÄLJ VARIABEL

Exempelvis: Tilldela ett värde till flera variabler med SELECT

Syntax:

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

regler: Till skillnad från SET kan SELECT användas för att tilldela ett värde till flera variabler åtskilda av kommatecken.

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

SQL VÄLJ VARIABEL

Exempelvis: Tilldela värdet till en variabel med en underfråga med 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>)

regler:

  • Bifoga frågan inom parentes.
  • Frågan ska vara en skalär fråga. Den skalära frågan är frågan med resultatet som en rad och en kolumn. Annars kommer frågan att ge ett fel.
  • Om frågan returnerar noll rader är variabeln EMPTY, dvs NULL.
  • Ompröva vår "Guru99"-tabell

Exempel 1: När subquery returnerar en rad som ett resultat.

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

SQL VÄLJ VARIABEL

Exempel 2: När subquery returnerar nollrad som ett resultat

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

I detta speciella fall är variabeln till EMPTY, dvs NULL.

SQL VÄLJ VARIABEL

Exempel 3: Tilldela ett värde till en variabel med en vanlig SELECT-sats.

Syntax:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>

regler:

  • Till skillnad från SET, om frågan resulterar i flera rader ställs variabelvärdet in på värdet för den sista raden.
  • Om frågan returnerar noll rader ställs variabeln in på EMPTY, dvs NULL.

Fråga 1: Frågan returnerar en rad.

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

SQL VÄLJ VARIABEL

Fråga 2: Frågan returnerar flera rader.

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

I detta speciella fall är variabelvärdet ställ in på värdet på den sista raden.

SQL VÄLJ VARIABEL

Fråga 3: Frågan returnerar noll rader.

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

I detta speciella fall är variabeln EMPTY, dvs NULL.

SQL VÄLJ VARIABEL

Andra SQL-variable exempel

Använder variabel i frågan

Fråga:

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

Annan SQL-variabel

Intressanta fakta om SQL Server-variabler!

  • En lokal variabel kan visas med PRINT samt SELECT COMMAND
  • Tabell Datatyp tillåter inte användning av 'AS' under deklaration.
  • SET följer ANSI-standarder medan SELECT inte gör det.
  • Det är också tillåtet att skapa en lokal variabel med namnet @. Vi kan deklarera det som till exempel:
    'DECLARE @@ as VARCHAR (10)'
    

Sammanfattning

  • Variabler är det objekt som fungerar som en platshållare.
  • Det finns två typer av variabler: lokal och global
  • Vi kan tilldela variabeln på följande tre sätt: Medan du använder 1) DECLARE 2) Använder SET 3) ANVÄNDER SELECT