Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Portée de la table temporaire ?

Tout d'abord, les tables temporaires locales créées dans une procédure sont supprimées une fois la procédure terminée. Depuis le BOL sur Create Table :

Si votre code d'accès aux données ouvre correctement une connexion, appelle une procédure stockée puis ferme la connexion, la table temporaire créée dans la procédure est effectivement détruite.

Je dis "effectivement" pour soulever un autre point. Je ne recommanderais pas de supprimer la table temporaire à la fin de votre procédure, bien que j'ajouterais une vérification juste avant de créer la table temporaire et de la supprimer si elle existe (par exemple, if object_id('tempdb..#Foo') is not null ). L'argument contre la suppression de la table temporaire à la fin est qu'en appelant l'instruction Drop, vous obligez SQL Server à dépenser des ressources pour détruire la table sur-le-champ pendant que vous attendez la fin de votre procédure. Si, au contraire, vous la laissez sortir de la portée, votre procédure se termine immédiatement et vous laissez SQL Server détruire la table au moment de son choix.