SQL-variabler: SQL Server erklærer, indstil og vælg variabel
Hvad er en variabel i SQL Server?
I MS SQL er variabler det objekt, der fungerer som en pladsholder til en hukommelsesplacering. Variabel hold enkelt dataværdi.
Variabeltyper i SQL: Lokal, Global
MS SQL har to typer variabler:
- Lokal variabel
- Global variabel.
Brugeren kan dog kun oprette en lokal variabel.
Nedenstående figur forklarer to typer variabler tilgængelige i MS SQL server.
Lokal variabel
- En bruger erklærer den lokale variabel.
- Som standard starter en lokal variabel med @.
- Hver lokal variabel rækkevidde har begrænsningen til nuværende batch eller procedure inden for en given session.
Global variabel
- Systemet vedligeholder den globale variabel. En bruger kan ikke erklære dem.
- Den globale variabel starter med @@
- Det gemmer session relateret information.
Sådan ERKLÆRER du en variabel i SQL
- Før du bruger en variabel i batch eller procedure, skal du erklære variablen.
- DECLARE-kommandoen bruges til at DECLARE variabel, der fungerer som en pladsholder for hukommelsesplaceringen.
- Først når deklarationen er foretaget, kan en variabel bruges i den efterfølgende del af batch eller procedure.
TSQL syntaks:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regler:
- Initialisering er en valgfri ting, mens du erklærer.
- Som standard initialiserer DECLARE variabel til NULL.
- Det er valgfrit at bruge søgeordet 'AS'.
- For at erklære mere end én lokal variabel skal du bruge et komma efter den første lokale variabeldefinition og derefter definere det næste lokale variabelnavn og datatype.
Eksempler på at deklarere en variabel
Forespørgsel: Med 'AS'
DECLARE @COURSE_ID AS INT;
Forespørgsel: Uden 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Forespørgsel: ERKLÆR to variable
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Tildeling af en værdi til SQL-variabel
Du kan tildele en værdi til en variabel i det følgende tre måder:
- Under variabel erklæring ved hjælp af DECLARE nøgleord.
- Brug af SET
- Brug af SELECT
Lad os se nærmere på alle tre måder:
Under variabel erklæring ved hjælp af DECLARE nøgleord
T-SQL syntaks:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Her, efter datatype, kan vi bruge '=' efterfulgt af værdi, der skal tildeles
Forespørgsel:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Brug af SQL SET VARIABLE
Nogle gange ønsker vi at holde erklæring og initialisering adskilt. SET kan bruges til at tildele værdier til variablen, efter at deklarere en variabel. Nedenfor er de forskellige måder at tildele værdier ved hjælp af SET:
Eksempel: Tildeling af en værdi til en variabel ved hjælp af SET
Syntaks:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Forespørgsel:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Eksempel: Tildel en værdi til flere variabler ved hjælp af SET.
Syntaks:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regel: Et SET nøgleord kan kun bruges til at tildele en værdi til én variabel.
Forespørgsel:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Eksempel: Tildeling af en værdi til en variabel med en Skalær underforespørgsel ved hjælp af SET
Syntaks:
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:
- Indsæt forespørgslen i parentes.
- Forespørgslen skal være en skalær forespørgsel. En skalær forespørgsel er en forespørgsel med resultater som kun én række og én kolonne. Ellers vil forespørgslen give en fejl.
- Hvis forespørgslen returnerer nul rækker, sættes variablen til EMPTY, dvs. NULL.
Antagelse: Antag, at vi har tabellen som 'Guru99' med to kolonner som vist nedenfor:
Vi vil bruge 'Guru99'-tabellen i de yderligere tutorials
Eksempel 1: Når underforespørgsel returnerer en række som et resultat.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Eksempel 2: Når underforespørgsel returnerer nul række som et resultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
I dette særlige tilfælde er variabelværdien EMPTY, dvs. NULL.
Brug af SQL SELECT VARIABLE
Ligesom SET kan vi også bruge SELECT til at tildele værdier til variablerne, efter at deklarere en variabel ved hjælp af DECLARE. Nedenfor er der forskellige måder at tildele en værdi ved hjælp af SELECT:
Eksempel: Tildeling af en værdi til en variabel ved hjælp af SELECT
Syntaks:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Forespørgsel:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Eksempel: Tildeling af en værdi til flere variable ved hjælp af SELECT
Syntaks:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regler: I modsætning til SET kan SELECT bruges til at tildele en værdi til flere variable adskilt af komma.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Eksempel: Tildeling af værdien til en variabel med en underforespørgsel ved hjælp af SELECT
Syntaks:
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:
- Indsæt forespørgslen i parentes.
- Forespørgslen skal være en skalær forespørgsel. Den skalære forespørgsel er forespørgslen med resultatet som én række og én kolonne. Ellers vil forespørgslen give en fejl.
- Hvis forespørgslen returnerer nul rækker, er variablen EMPTY, dvs. NULL.
- Genovervej vores 'Guru99'-tabel
Eksempel 1: Når underforespørgsel returnerer en række som et resultat.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Eksempel 2: Når underforespørgsel returnerer nul række som et resultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
I dette særlige tilfælde er variablen til EMPTY, dvs. NULL.
Eksempel 3: Tildel en værdi til en variabel med en almindelig SELECT-sætning.
Syntaks:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Regler:
- I modsætning til SET, hvis forespørgslen resulterer i flere rækker, indstilles variabelværdien til værdien af den sidste række.
- Hvis forespørgslen returnerer nul rækker, sættes variablen til EMPTY, dvs. NULL.
Forespørgsel 1: Forespørgslen returnerer én række.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Forespørgsel 2: Forespørgslen returnerer flere rækker.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
I dette specielle tilfælde er variabel værdi indstillet til værdien af den sidste række.
Forespørgsel 3: Forespørgslen returnerer nul rækker.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
I dette særlige tilfælde er variablen EMPTY, dvs. NULL.
Andre SQL-variable eksempler
Brug af variabel i forespørgslen
Forespørgsel:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Interessante fakta om SQL Server-variabler!
- En lokal variabel kan vises ved hjælp af PRINT samt SELECT COMMAND
- Tabel Datatype tillader ikke brug af 'AS' under indberetning.
- SET overholder ANSI-standarder, hvorimod SELECT ikke gør.
- Det er også tilladt at oprette en lokal variabel med navnet @. Vi kan erklære det som for eksempel:
'DECLARE @@ as VARCHAR (10)'
Resumé
- Variabler er det objekt, der fungerer som en pladsholder.
- Der findes to typer variabler: Lokale og Globale
- Vi kan tildele variablen på følgende tre måder: Mens du bruger 1) DECLARE 2) Brug af SET 3) BRUG AF SELECT