관리 메뉴

why don't do your best

mssql while - msdn 발췌 본문

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 문은 괄호 안에 있어야 합니다.

 

1. 커서에 WHILE 사용

 

다음 예에서는 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';

관련 자료

BEGIN...END(Transact-SQL)
END(BEGIN...END)(Transact-SQL)
BREAK(Transact-SQL)
WHILE(Transact-SQL)
CONTINUE(Transact-SQL)

도움말 및 정보

SQL Server 2008 R2 지원 받기

'Database > MSSQL' 카테고리의 다른 글

table identity 값 초기화  (0) 2015.02.26
TABLE LAYOUT EXCEL 파일로 내려받기  (1) 2014.04.25
테이블 용량보기  (0) 2013.08.07
MSSQL COLLATION 변경하기  (0) 2013.08.05
연결된 서버 관련 SP  (0) 2013.07.12
Comments