Imbrication de procédures stockées
Les procédures stockées sont imbriquées lorsqu'une procédure stockée en appelle une autre ou exécute du code managé en faisant référence à une routine, un type ou un agrégat CLR. Vous pouvez imbriquer des procédures stockées et des références au code managé jusqu'à 32 niveaux. L'imbrication augmente d'un niveau lorsque la procédure stockée appelée ou la référence au code managé commence à s'exécuter, et diminue d'un niveau lorsque son exécution est terminée. Au-delà de 32 niveaux d'imbrication, toute la chaîne d'appels échoue. Le niveau d'imbrication actuel des procédures stockées en cours d'exécution est enregistré dans la fonction @@NESTLEVEL.
[!REMARQUE]
Une référence au code managé à partir d'une procédure stockée Transact-SQL compte pour un niveau par rapport à la limite d'imbrication de 32 niveaux. Les méthodes appelées à partir du code managé ne comptent pas par rapport à cette limite.
Lorsqu'une procédure stockée exécute du code managé en faisant référence à une routine, un type ou un agrégat CLR, cette référence compte également comme un niveau d'imbrication. Les méthodes appelées à partir du code managé ne comptent pas par rapport à cette limite. Le niveau d'imbrication actuel est retourné par la fonction @@NESTLEVEL. Lorsqu'une procédure stockée CLR exécute des opérations d'accès aux données par le biais du fournisseur managé de MicrosoftSQL Server, un niveau d'imbrication supplémentaire est ajouté à la transition du code managé à SQL et ce niveau est pris en compte dans la fonction @@NESTLEVEL.
Une erreur dans une procédure stockée imbriquée n'est pas nécessairement critique pour la procédure stockée appelante. Lors de l'appel de procédures stockées à l'intérieur d'autres procédures stockées, utilisez l'instruction Transact-SQL RETURN pour retourner un code de retour, puis vérifier ce code de retour à partir de la procédure appelante. De cette façon, vous pouvez déterminer le comportement qu'auront les procédures stockées lorsqu'une erreur se présentera. Pour plus d'informations sur l'emploi des codes de retour, consultez Renvoi de données au moyen d'un code de retour.
Les procédures stockées peuvent aussi s'appeler elles-mêmes, une technique connue sous le nom de récurrence.
Bien que l'imbrication soit limitée à 32 niveaux, SQL Server n'impose pas de limite quant au nombre de procédures stockées pouvant être appelées à partir d'une procédure stockée donnée, à condition que les procédures subordonnées n'appellent pas d'autres procédures subordonnées et que le niveau d'imbrication maximal ne soit jamais dépassé.