Aninhando procedimentos armazenados

O aninhamento ocorre quando um procedimento armazenado chama outro ou executa código gerenciado, fazendo referência a uma rotina, tipo ou agregação CLR. Você pode aninhar procedimentos armazenados e referências de código gerenciado em até 32 níveis. O nível de aninhamento aumenta quando o procedimento armazenado chamado ou a referência de código gerenciado inicia sua execução e diminui quando a execução é concluída. Tentar exceder o máximo de 32 níveis de aninhamento causará falha de toda a cadeia de chamada. O nível de aninhamento atual dos procedimentos armazenados na execução é armazenado na função @@NESTLEVEL.

ObservaçãoObservação

Qualquer referência a um código gerenciado de um procedimento armazenado Transact-SQL conta como um nível em relação ao limite de 32 níveis de aninhamento. Métodos invocados do código gerenciado não contam em relação a esse limite.

Quando um procedimento armazenado executa um código gerenciado fazendo referência a uma rotina, tipo ou agregação CLR, essa referência também conta como um nível de aninhamento. Métodos invocados do código gerenciado não contam em relação a esse limite. O nível aninhando atual é retornado pela função @@NESTLEVEL. Quando um procedimento armazenado CLR executa operações de acesso de dados por meio do provedor gerenciado MicrosoftSQL Server, um nível de aninhamento é adicionado na transição de código gerenciado para SQL e esse nível reflete-se na função @@NESTLEVEL.

Um erro em um procedimento armazenado aninhado não é necessariamente fatal à chamada de procedimento armazenado. Ao chamar procedimentos armazenados dentro de procedimentos armazenados, use a instrução Transact-SQL RETURN para retornar um código de retorno e verificar o código de retorno da chamada de procedimento armazenado. Desse modo, você poderá especificar o comportamento de seus procedimentos armazenados quando ocorrerem erros. Para obter mais informações sobre como usar códigos de retorno, consulte Retornando dados usando um código de retorno.

Procedimentos armazenados podem fazer até uma chamada aninhada a si mesmos, uma técnica conhecida como recursão.

Apesar de o limite de aninhamento ser de 32 níveis, SQL Server não tem limite para o número de procedimentos armazenados que podem ser invocados de um determinado procedimento armazenado, desde que os procedimentos armazenados subordinados não invoquem outros procedimentos armazenados e o nível de aninhamento máximo nunca seja excedido.

Consulte também

Referência