sql >> Base de Datos >  >> RDS >> Sqlserver

¿Ámbito de tabla temporal?

Primero, las tablas temporales locales creadas dentro de un procedimiento se eliminan una vez que finaliza el procedimiento. Desde el BOL en Crear tabla :

Si su código de acceso a datos abre correctamente una conexión, llama a un procedimiento almacenado y luego cierra la conexión, la tabla temporal se crea en el procedimiento y se destruye efectivamente.

Digo "efectivamente" para plantear otro punto. No recomendaría descartar la tabla temporal al final de su procedimiento, aunque agregaría una verificación justo antes de crear la tabla temporal y la eliminaría si existe (por ejemplo, if object_id('tempdb..#Foo') is not null ). El argumento en contra de eliminar la tabla temporal al final es que al llamar a la instrucción Drop, está obligando a SQL Server a gastar recursos para destruir la tabla en ese momento mientras espera que finalice el procedimiento. Si, por el contrario, deja que quede fuera del alcance, el procedimiento finaliza inmediatamente y permite que SQL Server destruya la tabla en el momento que elija.