저장 프로시저 중첩

한 저장 프로시저가 다른 저장 프로시저를 호출하거나 CRL 루틴, 형식 또는 집계를 참조하여 관리 코드를 실행하는 경우에 저장 프로시저가 중첩됩니다. 저장 프로시저와 관리 코드 참조는 최대 32 수준까지 중첩될 수 있습니다. 호출된 저장 프로시저나 관리 코드 참조의 실행이 시작되면 중첩 수준이 하나 증가하고 호출된 저장 프로시저나 관리 참조 코드의 실행이 끝나면 중첩 수준이 하나 감소합니다. 32수준을 초과하여 중첩하려고 시도하면 전체 호출 체인이 끊어집니다. 실행 중인 저장 프로시저의 현재 중첩 수준은 @@NESTLEVEL 함수에 저장됩니다.

[!참고]

Transact-SQL 저장 프로시저에서 관리 코드로의 참조는 32 수준 중첩 제한에 대해 한 수준으로 계산됩니다. 관리 코드 내에서 호출된 메서드는 이 제한에 포함되지 않습니다.

저장 프로시저가 CLR 루틴, 형식 또는 집계를 참조하여 관리 코드를 실행하면 이 참조도 하나의 중첩 수준으로 계산됩니다. 관리 코드 내에서 호출된 메서드는 이 제한에 포함되지 않습니다. @@NESTLEVEL 함수에서 현재 중첩 수준을 반환합니다. CLR 저장 프로시저가 MicrosoftSQL Server 관리 공급자를 통해 데이터 액세스 작업을 수행하면 관리 코드에서 SQL로의 전환에 추가적인 중첩 수준이 더해지고 이 수준은 @@NESTLEVEL 함수에 반영됩니다.

중첩된 저장 프로시저의 오류가 호출하는 저장 프로시저에 반드시 큰 영향을 주는 것은 아닙니다. 저장 프로시저 안에서 저장 프로시저를 호출할 때 Transact-SQL RETURN 문을 사용하여 반환 코드를 반환하고 호출하는 저장 프로시저에서 반환 코드를 검사하십시오. 이런 방식으로 오류가 발생할 때 저장 프로시저가 수행할 동작을 지정할 수 있습니다. 반환 코드를 사용하는 방법은 반환 코드를 사용하여 데이터 반환을 참조하십시오.

저장 프로시저가 자신을 중첩 호출할 수도 있습니다. 이러한 기법을 재귀라고 합니다.

중첩 제한은 32 수준이지만 SQL Server에서는 종속 저장 프로시저가 다른 종속 저장 프로시저를 호출하지 않고 최대 중첩 수준을 초과하지 않는 한 저장 프로시저가 호출할 수 있는 저장 프로시저의 수에 제한이 없습니다.