수색…


통사론

  • DECLARE @VariableName DataType [= Value];
  • SET @VariableName = Value;

테이블 변수 선언

DECLARE @Employees TABLE
(
    EmployeeID INT NOT NULL PRIMARY KEY,
    FirstName NVARCHAR(50) NOT NULL,
    LastName NVARCHAR(50) NOT NULL,
    ManagerID INT NULL
)

일반 테이블을 만들 때 CREATE TABLE Name (Columns) 구문을 사용합니다. 테이블 변수를 만들 때 DECLARE @Name TABLE (Columns) 구문을 사용합니다.

SELECT 문 내에서 테이블 변수를 참조하려면 SQL Server에서 테이블 변수에 별칭을 지정해야합니다. 그렇지 않으면 오류가 발생합니다.

스칼라 변수 "@TableVariableName"을 선언해야합니다.

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

SET을 사용하여 변수 업데이트하기

DECLARE @VariableName INT
SET @VariableName = 1
PRINT @VariableName

1

SET 사용하면 한 번에 하나의 변수 만 업데이트 할 수 있습니다.

SELECT를 사용하여 변수 업데이트

SELECT 사용하면 여러 변수를 동시에 업데이트 할 수 있습니다.

DECLARE @Variable1 INT, @Variable2 VARCHAR(10)
SELECT @Variable1 = 1, @Variable2 = 'Hello'
PRINT @Variable1
PRINT @Variable2

1

여보세요


SELECT 를 사용하여 테이블 열의 변수를 갱신 할 때 여러 값이있는 경우 마지막 값을 사용합니다. (일반적인 순서 규칙이 적용됩니다. 정렬을 지정하지 않으면 순서가 보장되지 않습니다.)

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

쿼리에서 반환 한 행이 없으면 변수의 값은 변경되지 않습니다.

SELECT TOP 0 @Variable = Example
FROM #Test
ORDER BY Example ASC

PRINT @Variable

1

한 번에 여러 변수를 선언하고 초기 값으로 선언하십시오.

DECLARE 
  @Var1 INT = 5, 
  @Var2 NVARCHAR(50) = N'Hello World', 
  @Var3 DATETIME = GETDATE()

복합 대입 연산자

SQL Server 2008 R2

지원되는 복합 연산자 :

+= 추가 및 지정

-= 빼기 및 할당

*= 곱하기 및 할당

/= 나누기 및 지정

%= 모듈로 및 할당

&= 비트 AND 및 지정

^= 비트 XOR 및 할당

|= 비트 OR 및 할당

사용 예 :

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

테이블에서 선택하여 변수 업데이트하기

데이터 구조에 따라 동적으로 업데이트되는 변수를 만들 수 있습니다.

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)

대부분의 경우이 메서드를 사용할 때 쿼리에서 하나의 값만 반환되도록해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow