Condividi tramite


Nidificazione di stored procedure

Le stored procedure vengono nidificate quando una stored procedure ne chiama un'altra o esegue codice gestito facendo riferimento a una routine, un tipo o una funzione di aggregazione CLR. È possibile nidificare fino a 32 livelli di stored procedure e riferimenti a codice gestito. Il livello di nidificazione viene incrementato di un'unità quando viene avviata l'esecuzione della stored procedure o del riferimento al codice gestito chiamato e viene ridotto di un'unità quando ne viene completata l'esecuzione. Il tentativo di superare il livello massimo di 32 livelli di nidificazione causa l'esito negativo dell'intera catena di chiamata. Il livello di nidificazione attivo delle stored procedure in esecuzione viene archiviato nella funzione @@NESTLEVEL.

[!NOTA]

Qualsiasi riferimento a codice gestito da una stored procedure Transact-SQL viene conteggiato come un unico livello rispetto al limite dei 32 livelli di nidificazione. I metodi richiamati da codice gestito non vengono inclusi nel conteggio per questo limite.

Quando una stored procedure esegue codice gestito facendo riferimento a una routine, a un tipo o a una funzione di aggregazione CLR, anche questo riferimento viene conteggiato come un unico livello di nidificazione. I metodi richiamati da codice gestito non vengono inclusi nel conteggio per questo limite. Il livello di nidificazione corrente viene restituito dalla funzione @@NESTLEVEL. Quando una stored procedure CLR esegue operazioni di accesso ai dati tramite il provider gestito MicrosoftSQL Server, nel passaggio dal codice gestito a SQL viene aggiunto un ulteriore livello di nidificazione, riportato nella funzione @@NESTLEVEL.

Un errore in una stored procedure nidificata non è necessariamente irreversibile per la stored procedure che esegue la chiamata. Quando si richiamano stored procedure all'interno di stored procedure, utilizzare l'istruzione Transact-SQL RETURN per restituire un codice e verificare il codice restituito dalla stored procedure che esegue la chiamata. In questo modo, è possibile determinare il funzionamento delle stored procedure quando si verificano errori. Per ulteriori informazioni sull'utilizzo di codici restituiti, vedere Restituzione di dati utilizzando un codice restituito.

Le stored procedure possono inoltre eseguire una chiamata nidificata a se stesse, in base a una tecnica nota come ricorsione.

Sebbene il limite di nidificazione sia 32 livelli, SQL Server non prevede limiti per il numero di stored procedure che è possibile richiamare da una determinata stored procedure, a condizione che le stored procedure subordinate non richiamino altre stored procedure subordinate e che il livello di nidificazione massimo non venga superato.