Rookiss Part5 데이터베이스 : 변수와 흐름 제어
🙇♀️변수와 흐름 제어
🪐변수
DECLATE
DECLARE @i AS INT = 10;
DECLARE @J AS INT
SET @J = 10;
예제
- 예제) 역대 최고 연봉을 받은 선수 이름? ``` DECLARE @firstName AS NVARCHAR(15); DECLARE @lastName AS NVARCHAR(15);
/* SET @firstName = (SELECT TOP 1 * FROM players AS p INNER JOIN salaries AS S ON P.PLAYERID = S.playerID ORDER BY s.salary DESC) */
– SQL SERVER SELECT TOP 1 @firstName = p.nameFirst, @lastName = p.nameLast FROM players AS p INNER JOIN salaries AS s ON p.playerID = s.playerID ORDER BY s.salary DESC
SELECT @firstName, @lastName;
### 🪐배치(BATCH)
`GO`
* 배치를 이용해 변수의 유효범위 설정 가능 { }
* 배치는 하나의 묶음으로 분석되고 실행되는 명령어 집합
### 🪐흐름제어
**IF**
GO DECLARE @i AS INT = 10;
IF @i = 10 BEGIN PRINT(‘BINGO!’) PRINT(‘BINGO!’) END ELSE BEGIN PRINT(‘NO’) END
**WHILE**
GO
DECLARE @i AS INT = 0; WHILE @i <= 10 BEGIN PRINT @i; SET @i = @i + 1; IF @i = 6 BREAK; END
GO
DECLARE @i AS INT = 0; WHILE @i <= 10 BEGIN SET @i = @i + 1; IF @i = 6 CONTINUE; PRINT @i; END
### 🪐테이블 변수
* 임시로 사용할 테이블을 변수로 만들 수 있다!
* testA, testB 만들고 삭제 -> NO!
* DECLARE를 사용 -> tempdb 데이터베이스에 임시 저장
GO
DECLARE @test TABLE ( name VARCHAR(50) NOT NULL, salary INT NOT NULL );
INSERT INTO @test SELECT p.nameFirst + ‘ ‘ + p.nameLast, s.salary FROM players AS p INNER JOIN salaries AS s ON p.playerID = s.playerID;
SELECT * FROM @test ```