SQL-variabler: SQL Server Deklarer, angiv og vælg variabel
⚡ Smart opsummering
SQL Server-variabler er navngivne objekter, der fungerer som pladsholdere for en enkelt dataværdi i hukommelsen. En variabel skal deklareres med DECLARE-sætningen, før den kan tildeles en værdi og genbruges.
Hvad er en variabel i SQL Server?
In MS SQL Server, variabler er objekter, der fungerer som pladsholdere for en hukommelsesplacering. En variabel indeholder en enkelt dataværdi, som du kan læse og genbruge på tværs af en batch eller procedure.
Variabeltyper i SQL: Lokal, Global
MS SQL Server har to typer variabler:
- Lokal variabel
- Global variabel
En bruger kan dog kun oprette en lokal variabel. Figuren nedenfor forklarer de to typer variabler, der er tilgængelige i MS SQL Server.
Lokal variabel
- En bruger erklærer den lokale variabel.
- Som standard starter et lokalt variabelnavn med @.
- Hver lokal variabel er begrænset til den aktuelle batch eller procedure inden for en given session.
Global variabel
- Systemet vedligeholder den globale variabel; en bruger kan ikke deklarere en.
- Et globalt variabelnavn starter med @@.
- Den gemmer sessionsrelaterede oplysninger.
Sådan ERKLÆRER du en variabel i SQL
Før du bruger en variabel i en batch eller procedure i SQL, skal du deklarere den. DECLARE-kommandoen opretter en variabel, der fungerer som en pladsholder for en hukommelsesplacering. Først når deklarationen er foretaget, kan variablen bruges i den efterfølgende del af batchen eller proceduren.
TSQL syntaks:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regler:
- Initialisering er valgfri under deklarering.
- Som standard initialiserer DECLARE variablen til NULL.
- Det er valgfrit at bruge søgeordet 'AS'.
- For at deklarere mere end én lokal variabel, skal du tilføje et komma efter den første definition, derefter give den næste variabel et navn 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 på følgende tre måder:
- Under variabeldeklaration ved hjælp af nøgleordet DECLARE.
- 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 kan du efter datatypen bruge '=' efterfulgt af den værdi, der skal tildeles.
Forespørgsel:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Når forespørgslen køres, udskrives den værdi, der blev tildelt under deklarationen, som vist nedenfor.
Brug af SQL SET-variabel
Nogle gange vil man gerne holde deklaration og initialisering adskilt. SET tildeler en værdi til variablen, efter den er blevet deklareret. Nedenfor er de forskellige måder at tildele værdier på 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
Udførelse af scriptet returnerer den værdi, der er tildelt med SET, vist nedenfor.
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 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
De to PRINT-sætninger returnerer begge tildelte værdier, som vist nedenfor.
Eksempel: Tildeling af en værdi til en variabel med en skalar 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:
- Omslut forespørgslen i parenteser.
- Forespørgslen skal være en skalar forespørgsel, hvilket betyder, at den kun returnerer én række og én kolonne. Ellers giver forespørgslen en fejl.
- Hvis forespørgslen returnerer nul rækker, sættes variablen til EMPTY, det vil sige NULL.
Antag at vi har bord som hedder 'Guru99' med to kolonner, som vist nedenfor. Denne tabel bruges i de følgende eksempler.
Eksempel 1: Når underforespørgslen returnerer én række som resultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Fordi underforespørgslen returnerer én matchende række, modtager variablen den værdi, som vist nedenfor.
Eksempel 2: Når underforespørgslen returnerer nul rækker som resultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Da underforespørgslen ikke returnerer nogen rækker, er variabelværdien EMPTY, dvs. NULL, så intet udskrives, som vist nedenfor.
Brug af SQL SELECT-variabel
Ligesom SET kan du også bruge SELECT til at tildele værdier til variabler efter at have deklareret dem med DECLARE. Nedenfor er 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
SELECT-tildelingen udskriver værdien, som vist nedenfor.
Eksempel: Tildeling af en værdi til flere variabler 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>
Regel: I modsætning til SET kan SELECT tildele en værdi til flere variabler adskilt af kommaer.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Begge variabler er tildelt i en enkelt SELECT, som vist nedenfor.
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:
- Omslut forespørgslen i parenteser.
- Forespørgslen skal være en skalar forespørgsel, der returnerer én række og én kolonne. Ellers giver forespørgslen en fejl.
- Hvis forespørgslen returnerer nul rækker, er variablen EMPTY, det vil sige NULL.
Genovervej vores 'Guru99 fods bord.
Eksempel 1: Når underforespørgslen returnerer én række som resultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Underforespørgslen returnerer én række, så variablen indeholder den værdi, som vist nedenfor.
Eksempel 2: Når underforespørgslen returnerer nul rækker som resultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Uden en matchende række forbliver variablen TOM, dvs. NULL, som vist nedenfor.
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 sættes variabelværdien til værdien af den sidste række, hvis forespørgslen returnerer flere rækker.
- Hvis forespørgslen returnerer nul rækker, sættes variablen til EMPTY, det vil sige 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
Den enkelte matchende række angiver variabelværdien, som vist nedenfor.
Forespørgsel 2: Forespørgslen returnerer flere rækker
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Når flere rækker matcher, beholder variablen værdien fra den sidste række, som vist nedenfor.
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
Når ingen rækker matcher, er variablen EMPTY, det vil sige NULL, som vist nedenfor.
Andre SQL-variable eksempler
En deklareret variabel kan også bruges i en forespørgsel, for eksempel i en WHERE-klausul til at filtrere rækker.
Forespørgsel:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Variablen filtrerer forespørgslen og returnerer den matchende række, som vist nedenfor.
Interessante fakta om SQL Server-variabler!
- En lokal variabel kan vises ved hjælp af PRINT såvel som SELECT-kommandoen.
- Tabeldatatypen tillader ikke brugen af 'AS' under deklaration.
- SET overholder ANSI-standarder, mens SELECT ikke gør.
- Det er også tilladt at oprette en lokal variabel med navnet @. For eksempel kan den deklareres som:
'DECLARE @@ as VARCHAR (10)'
















