Database/MSSQL
mssql while - msdn 발췌
빅셔
2014. 4. 3. 10:15
WHILE 문은 지정된 조건이 True인 동안 문 또는 문 블록을 반복합니다.
WHILE과 함께 주로 사용되는 Transact-SQL 문은 BREAK와 CONTINUE, 이렇게 두 가지입니다. BREAK 문은 가장 안쪽의 WHILE 루프를 종료하고 CONTINUE 문은 WHILE 루프를 다시 시작합니다. 예를 들어 프로그램에서 처리할 행이 더 없는 경우 BREAK 문을 실행할 수 있습니다. CONTINUE 문은 코드를 계속 실행해야 하는 등의 경우에 실행할 수 있습니다.
|
---|
SELECT 문이 WHILE 문의 조건으로 사용되면 SELECT 문은 괄호 안에 있어야 합니다.
|
다음 예에서는 WHILE
문을 사용하여 수행할 인출 수를 제어합니다.
![]() | |
---|---|
USE AdventureWorks2008R2; GO DECLARE abc CURSOR FOR SELECT * FROM Purchasing.ShipMethod; OPEN abc; FETCH NEXT FROM abc WHILE (@@FETCH_STATUS = 0) FETCH NEXT FROM abc; CLOSE abc; DEALLOCATE abc; GO |
기타 유효한 WHILE 조건 테스트는 다음과 같습니다.
![]() | |
---|---|
WHILE (@ACounterVariable < 100) |
또는
![]() | |
---|---|
WHILE EXISTS(SELECT LastName FROM Person.Person WHERE FirstName = N'Anne') |
2. 중첩된 IF...ELSE 및 WHILE에서 BREAK 및 CONTINUE 사용
다음 예에서는 제품의 평균 정가가 $300
미만인 경우 WHILE
루프가 가격을 두 배로 한 다음 최대 가격을 선택합니다. 최대 가격이 $500
이하인 경우 WHILE
루프가 다시 시작되어 가격을 다시 두 배로 만듭니다. 이 루프는 최대 가격이 $500
를 초과할 때까지 가격을 계속 두 배로 만든 다음 WHILE
루프를 종료하고 메시지를 출력합니다.
![]() | |
---|---|
USE AdventureWorks2008R2; GO WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 BEGIN UPDATE Production.Product SET ListPrice = ListPrice * 2 SELECT MAX(ListPrice) FROM Production.Product IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear'; |