Microsoft SQL Server
Variabelen
Zoeken…
Syntaxis
- DECLARE @VariableName DataType [= Waarde];
- SET @VariableName = Waarde;
Declareer een tabelvariabele
DECLARE @Employees TABLE
(
EmployeeID INT NOT NULL PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
ManagerID INT NULL
)
Wanneer u een normale tabel maakt, gebruikt u de syntaxis CREATE TABLE Name (Columns)
. Wanneer u een DECLARE @Name TABLE (Columns)
, gebruikt u de syntaxis DECLARE @Name TABLE (Columns)
.
Om te verwijzen naar de tabelvariabele in een SELECT
instructie, vereist SQL Server dat u de tabelvariabele een alias geeft, anders krijgt u een foutmelding:
Moet de scalaire variabele "@TableVariableName" declareren.
d.w.z
DECLARE @Table1 TABLE (Example INT)
DECLARE @Table2 TABLE (Example INT)
/*
-- the following two commented out statements would generate an error:
SELECT *
FROM @Table1
INNER JOIN @Table2 ON @Table1.Example = @Table2.Example
SELECT *
FROM @Table1
WHERE @Table1.Example = 1
*/
-- but these work fine:
SELECT *
FROM @Table1 T1
INNER JOIN @Table2 T2 ON T1.Example = T2.Example
SELECT *
FROM @Table1 Table1
WHERE Table1.Example = 1
Een variabele bijwerken met SET
DECLARE @VariableName INT
SET @VariableName = 1
PRINT @VariableName
1
Met SET
kunt u slechts één variabele tegelijk bijwerken.
Variabelen bijwerken met SELECT
Met SELECT
kunt u meerdere variabelen tegelijkertijd bijwerken.
DECLARE @Variable1 INT, @Variable2 VARCHAR(10)
SELECT @Variable1 = 1, @Variable2 = 'Hello'
PRINT @Variable1
PRINT @Variable2
1
Hallo
Wanneer u SELECT
gebruikt om een variabele uit een tabelkolom bij te werken en er meerdere waarden zijn, gebruikt deze de laatste waarde. (Normale bestelregels zijn van toepassing - als er geen sortering wordt gegeven, is de bestelling niet gegarandeerd.)
CREATE TABLE #Test (Example INT)
INSERT INTO #Test VALUES (1), (2)
DECLARE @Variable INT
SELECT @Variable = Example
FROM #Test
ORDER BY Example ASC
PRINT @Variable
2
SELECT TOP 1 @Variable = Example
FROM #Test
ORDER BY Example ASC
PRINT @Variable
1
Als er geen rijen worden geretourneerd door de query, verandert de waarde van de variabele niet:
SELECT TOP 0 @Variable = Example
FROM #Test
ORDER BY Example ASC
PRINT @Variable
1
Declareer meerdere variabelen tegelijk, met beginwaarden
DECLARE
@Var1 INT = 5,
@Var2 NVARCHAR(50) = N'Hello World',
@Var3 DATETIME = GETDATE()
Operators voor samengestelde toewijzingen
Ondersteunde samengestelde operatoren:
+=
Toevoegen en toewijzen
-=
Aftrekken en toewijzen
*=
Vermenigvuldigen en toewijzen
/=
Delen en toewijzen
%=
Modulo en toewijzen
&=
Bitwise AND en toewijzen
^=
Bitwise XOR en toewijzen
|=
Bitgewijs OF en toewijzen
Voorbeeld gebruik:
DECLARE @test INT = 42;
SET @test += 1;
PRINT @test; --43
SET @test -= 1;
PRINT @test; --42
SET @test *= 2
PRINT @test; --84
SET @test /= 2;
PRINT @test; --42
Variabelen bijwerken door uit een tabel te selecteren
Afhankelijk van de structuur van uw gegevens, kunt u variabelen maken die dynamisch worden bijgewerkt.
DECLARE @CurrentID int = (SELECT TOP 1 ID FROM Table ORDER BY CreateDate desc)
DECLARE @Year int = 2014
DECLARE @CurrentID int = (SELECT ID FROM Table WHERE Year = @Year)
In de meeste gevallen wilt u ervoor zorgen dat uw query slechts één waarde retourneert wanneer u deze methode gebruikt.