티스토리 뷰

SQL/MSSQL

[MSSQL] 재귀호출

TORO_0513 2021. 8. 18. 07:36
반응형

재귀호출

해당 함수 또는 테이블의 값을 다시 호출하면서 반복적으로 처리할 때 사용

시스템에서 반복할 수 있는 최대 횟수를 지정하는 것이 좋음 

(생략하면 DB 기본값으로 설정되어 시스템 설정에 따라 오류가 발생될 수 있음)

 

WHILE문으로 수행하는 방법보다 훨씬 빠른 속도를 기대할 수 있음

SET NOCOUNT ON;

WITH Q AS (SELECT 순번 = 1,
		  합계 = 1
	 UNION ALL
	 SELECT 순번 = 순번 + 2,
		합계 = 합계 + (순번 + 2)
	 FROM Q
	 WHERE 순번 < 100 - 1 )

SELECT *
FROM Q OPTION (MAXRECURSION 100)

OPTION을 통해 재귀호출 최대 실행 횟수를 제한할 수 있음 (잘못 작성하면 무한반복할 수 있음)

- MAXRECURSION : 재귀호출 최대 실행횟수를 지정

ex) MAXRECURSION 100 -> 최대 100번만 가능하고 초과하면 오류 발생

    MAXRECURSION 0 -> 제한하지 않음(미권장)

 

 

* 도서 'MSSQL Server 기본에서 실무까지' 참조

반응형

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

[MSSQL] 난수 - RAND() 함수  (0) 2021.09.11
[MSSQL] 반복 로직 - 구구단  (0) 2021.09.09
[MSSQL] SET 설정  (0) 2021.08.13
[MSSQL] 동적SQL  (0) 2021.08.10
[MSSQL] 자료 처리 저장프로시저 개발 절차 및 기본 구성  (0) 2021.08.02
댓글