Hoy, mientras hacía pruebas en una aplicación desarrollada en C#, una rutina que se encargaba de obtener el esquema de procedimientos almacenados (Sql Server), mandaba errores -con el mensaje "Invalid object name '#temp...'"- por el hecho de que algunos de éstos hacían uso de tablas temporales.
El código en cuestión hacía algo como esto:
Y el procedimiento tenía una estructura parecida a:
AS
SELECT a, b
INT0 #temp
FR0M tabla1
SELECT T.*, T2.c
FR0M #temp T join tabla2 T2
0N T.a = T2.a
go
Después de hacer una búsqueda y encontrar un par de páginas que aclararon mis dudas, finalmente tuve que modificar algunos procedimientos para que hagan uso de variables tipo table.
Nota: La sintáxis del procedimiento tiene errores intencionales debido a los problemas de configuración en el servidor donde se hospeda esta página