SQL 순환 문
---------------
while 조건 begin 실행 동작 set @ i = @ i + 1end
WHILE
SQL 문장 이나 문장 블록 을 중복 실행 하 는 조건 을 설정 합 니 다.지정 한 조건 이 진실 이 라면 실행 문 구 를 반복 합 니 다.BREAK 와 CONTINUE 키 워드 를 사용 하여 순환 내부 에서 WHILE 순환 에서 문장의 실행 을 제어 할 수 있 습 니 다.
문법
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 키워드 뒤에 나타 나 는 모든 문 구 를 실행 합 니 다. END 키 워드 는 순환 종료 표시 입 니 다.
CONTINUE
WHILE 순환 을 다시 시작 하고 CONTINUE 키워드 뒤의 모든 문 구 를 무시 합 니 다.
주석
두 개 이상 의 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.