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:
- Lokal variabel
- 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.
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:
- Under variabeldeklaration med nyckelord DECLARE.
- Använder SET
- 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
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
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
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:
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
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.
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
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
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
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.
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
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.
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.
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
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