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

SQL Server 2008 R2

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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow