SQL-variabelen: SQL Server declareert, stelt in en selecteert variabele
Wat is een variabele in SQL Server?
In MS SQL zijn variabelen het object dat fungeert als tijdelijke aanduiding voor een geheugenlocatie. Variabele bevat één gegevenswaarde.
Variabeletypen in SQL: lokaal, globaal
MS SQL heeft twee soorten variabelen:
- Lokale variabele
- Globale variabele.
De gebruiker kan echter alleen een lokale variabele maken.
Onderstaande afbeelding legt twee soorten variabelen uit die beschikbaar zijn in MS SQL-server.
Lokale variabele
- Een gebruiker declareert de lokale variabele.
- Standaard begint een lokale variabele met @.
- Elke lokale variabele scope heeft de beperking tot de huidige batch of procedure binnen een bepaalde sessie.
Globale variabele
- Het systeem onderhoudt de globale variabele. Een gebruiker kan deze niet declareren.
- De globale variabele begint met @@
- Het slaat op sessiegerelateerde informatie.
Hoe een variabele in SQL te DECLARE
- Voordat u een variabele in batch of procedure gebruikt, moet u dit doen declareer de variabele.
- DECLARE-opdracht wordt gebruikt voor de DECLARE-variabele die fungeert als tijdelijke aanduiding voor de geheugenlocatie.
- Pas nadat de aangifte is gedaan, kan een variabele worden gebruikt in het volgende deel van de batch of procedure.
TSQL-syntaxis:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Reglement:
- Initialisatie is een optioneel iets tijdens het declareren.
- DECLARE initialiseert de variabele standaard naar NULL.
- Het gebruik van het trefwoord 'AS' is optioneel.
- Om meer dan één lokale variabele te declareren, gebruikt u een komma na de eerste definitie van de lokale variabele en definieert u vervolgens de naam van de volgende lokale variabele en data type.
Voorbeelden van het declareren van een variabele
Zoekopdracht: met 'AS'
DECLARE @COURSE_ID AS INT;
Zoekopdracht: zonder 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Query: DECLARE twee variabelen
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Een waarde toewijzen aan SQL-variabele
U kunt op de volgende manier een waarde aan een variabele toewijzen drie manieren:
- Tijdens het declareren van variabelen met het trefwoord DECLARE.
- SET gebruiken
- Met behulp van SELECT
Laten we alle drie de manieren in detail bekijken:
Tijdens het declareren van variabelen met het trefwoord DECLARE
T-SQL-syntaxis:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Hier kunnen we na datatype '=' gebruiken, gevolgd door de toe te kennen waarde
Query:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Met behulp van SQL SET VARIABELE
Soms willen we declaratie en initialisatie gescheiden houden. SET kan worden gebruikt om waarden aan de variabele toe te wijzen, na het declareren van een variabele. Hieronder staan de verschillende manieren om waarden toe te wijzen met behulp van SET:
Voorbeeld: Een waarde toewijzen aan een variabele met behulp van SET
Syntax:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Query:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Voorbeeld: Wijs een waarde toe aan meerdere variabelen met behulp van 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: Er kan slechts één SET-trefwoord worden gebruikt om een waarde aan toe te wijzen één variabele.
Query:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Voorbeeld: Een waarde toekennen aan een variabele met a Scalaire subquery met behulp van 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>)
Reglement:
- Plaats de query tussen haakjes.
- De query moet een scalaire query zijn. Een scalaire query is een query met resultaten als slechts één rij en één kolom. Anders zal de query een fout genereren.
- Als de query nul rijen retourneert, wordt de variabele ingesteld op EMPTY, dwz NULL.
Veronderstelling: Stel dat we de tabel 'Guru99' hebben met twee kolommen zoals hieronder weergegeven:
We zullen de 'Guru99'-tabel gebruiken in de verdere tutorials
Voorbeeld 1: Wanneer de subquery één rij retourneert als resultaat.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Voorbeeld 2: Wanneer de subquery als resultaat een rij nul retourneert
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
In dit specifieke geval is de variabelewaarde EMPTY, dwz NULL.
Gebruik SQL SELECT VARIABELE
Net als SET kunnen we SELECT ook gebruiken om waarden aan de variabelen toe te wijzen, nadat we een variabele hebben gedeclareerd met DECLARE. Hieronder vindt u verschillende manieren om een waarde toe te wijzen met behulp van SELECT:
Voorbeeld: Een waarde toewijzen aan een variabele met behulp van SELECT
Syntax:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Query:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Voorbeeld: Een waarde toewijzen aan meerdere variabelen met behulp van SELECT
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Reglement: In tegenstelling tot SET kan SELECT worden gebruikt om een waarde toe te kennen naar meerdere variabelen gescheiden door de komma.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Voorbeeld: De waarde toewijzen aan een variabele met een subquery met behulp van 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>)
Reglement:
- Plaats de query tussen haakjes.
- De query moet een scalaire query zijn. De scalaire query is de query met het resultaat als één rij en één kolom. Anders zal de query een fout genereren.
- Als de query nul rijen retourneert, is de variabele EMPTY, dat wil zeggen NULL.
- Heroverweeg onze 'Guru99'-tabel
Voorbeeld 1: Wanneer de subquery één rij retourneert als resultaat.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Voorbeeld 2: Wanneer de subquery als resultaat een nulrij retourneert
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
In dit specifieke geval is de variabele EMPTY, dwz NULL.
Voorbeeld 3: Wijs een waarde toe aan een variabele met een reguliere SELECT-instructie.
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Reglement:
- In tegenstelling tot SET wordt, als de zoekopdracht in meerdere rijen resulteert, de variabelewaarde ingesteld op de waarde van de laatste rij.
- Als de query nul rijen retourneert, wordt de variabele ingesteld op EMPTY, dwz NULL.
Query 1: De query retourneert één rij.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Query 2: De query retourneert meerdere rijen.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
In dit speciale geval is de variabele waarde dat wel ingesteld op de waarde van de laatste rij.
Query 3: De query retourneert nul rijen.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
In dit specifieke geval is de variabele EMPTY, dwz NULL.
Andere voorbeelden van SQL-variabelen
Variabele gebruiken in de query
Query:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Interessante feiten over SQL Server-variabelen!
- Een lokale variabele kan worden weergegeven met behulp van PRINT en SELECT COMMAND
- Tabelgegevenstype staat het gebruik van 'AS' tijdens declaratie niet toe.
- SET voldoet aan de ANSI-normen, terwijl SELECT dat niet doet.
- Het maken van een lokale variabele met de naam @ is ook toegestaan. We kunnen het bijvoorbeeld declareren als:
'DECLARE @@ as VARCHAR (10)'
Samenvatting
- Variabelen zijn het object dat als tijdelijke aanduiding fungeert.
- Er bestaan twee typen variabelen: Lokaal en Globaal
- We kunnen de variabele op de volgende drie manieren toewijzen: Bij gebruik van 1) DECLARE 2) Bij gebruik van SET 3) BIJ GEBRUIK VAN SELECT