Microsoft SQL Server
변수
수색…
통사론
- 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