티스토리 뷰
WHILE
SQL 문 또는 문 차단의 반복 실행에 대한 조건을 설정합니다. 문은 지정된 조건이 true인 한, 반복적으로 실행됩니다. WHILE 루프의 문 실행은 BREAK와 CONTINUE 키워드를 사용하여 루프 내에서 제어할 수 있습니다.
구문
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
인수
Boolean_expression
TRUE 또는 FALSE를 반환하는 식입니다. 부울 식에 SELECT 문이 포함된 경우에는 SELECT 문을 괄호로 묶어야 합니다.
{ sql_statement | statement_block }
문 블록에 정의된 모든 Transact-SQL 문이나 문의 그룹입니다. 문 블록을 정의하려면 흐름 제어 키워드인 BEGIN 및 END를 사용하십시오.
BREAK
가장 안쪽의 WHILE 루프에서 종료하도록 합니다. 루프의 끝을 표시하는 END 키워드 다음에 표시되는 모든 문은 실행됩니다.
CONTINUE
CONTINUE 키워드 다음의 모든 문을 무시하고 WHILE 루프가 다시 시작되도록 합니다.
비고
둘 이상의 WHILE 루프가 중첩된 경우에는 내부 BREAK가 다음 바깥쪽 루프로 종료합니다. 먼저 내부 루프의 끝 다음의 모든 문이 실행된 이후에 다음 바깥쪽 루프가 다시 시작합니다.
예제
A. 중첩된 IF...ELSE 및 WHILE로 BREAK 및 CONTINUE 사용
다음은 평균 가격이 $30 미만인 경우, WHILE 루프가 가격을 두 배로 한 다음 최대 가격을 선택하는 예제입니다. 최대 가격이 $50 이하인 경우, WHILE 루프가 다시 시작되어 가격을 다시 두 배로 만듭니다. 이러한 루프는 최대 가격이 $50를 초과할 때까지 가격을 두 배로 만드는 것을 계속한 다음 WHILE 루프를 종료하고 메시지를 인쇄합니다.
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear'
B. 커서가 있는 프로시저 내에서 WHILE 사용
다음 WHILE 생성은 count_all_rows라는 이름의 프로시저의 구역입니다. 다음은 이 WHILE 생성이 커서와 함께 사용되는 함수인 @@FETCH_STATUS의 반환 값을 테스트하는 예제입니다. @@FETCH_STATUS가 -2, -1 또는 0을 반환하므로 세 가지 경우를 모두 테스트해야 합니다. 저장 프로시저가 실행된 이후에 커서 결과로부터 행을 삭제한 경우에는 해당 행을 건너뜁니다. 성공적으로 반입(0)된 경우, BEGIN...END 루프 내의 SELECT가 실행됩니다.
USE pubs
DECLARE tnames_cursor CURSOR
FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
OPEN tnames_cursor
DECLARE @tablename sysname
--SET @tablename = 'authors'
FETCH NEXT FROM tnames_cursor INTO @tablename
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
SELECT @tablename = RTRIM(@tablename)
EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '
+ @tablename )
PRINT ' '
END
FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor
관련 항목
declare @count intset @count = 0
while @count < 300
begin
select * from dbo.Orders
set @count = @count +1
end
- Total
- Today
- Yesterday
- java.sql
- jstl(java standard tag library)-core
- 스프링 시큐리티(spring security)-http basic 인증
- 스프링 프레임워크(spring framewordk)
- docker
- 표현 언어(expression language)
- 제품 등록
- REST API
- 람다식(lambda expression)
- java-개발 환경 설정하기
- java 키워드 정리
- 스프링 시큐리티(spring security)
- 문자 자르기
- jsp 오픈 소스
- java web-mvc
- MainActor
- await
- 진수 변환
- system.io
- 인텔리제이(intellij)
- 메이븐(maven)
- .submit()
- In App Purchase
- 특정 문자를 기준으로 자르기
- jstl(java standard tag library)
- System.Diagnostics
- React
- nl2br
- error-java
- 스프링 프레임워크(spring framework)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |