9

Estoy intentando agregar un compilador de tablas a un procedimiento almacenado en mi SQL Server 2005 Express. El procedimiento almacenado, sin embargo, usa una tabla temporal llamada #temp. Al crear el adaptador de tabla, Visual Studio se queja de "Objeto desconocido '#temp'" y dice que el procedimiento almacenado devuelve 0 columnas. Esto es problemático porque utilizo ese procedimiento almacenado con un informe de cristal y necesito esas columnas.¿Por qué mi conjunto de datos tipeados no se parece a las tablas temporales?

¿Cómo puedo solucionar esto?

Respuesta

30

Bizarre. De acuerdo con this agrega

IF 1=0 BEGIN 
    SET FMTONLY OFF 
END 

a la derecha SP después de la parte a partir de la SP y funciona. Visual Studio ahora no tiene ningún problema con eso. No tengo idea de por qué esto funciona así o por qué funcionaría, pero lo hace.

+2

Alguien probablemente tenga un mal día de pelo. Me ayudó. +1 –

+0

todo lo que puedo decir es ... wow. esto funciona. Esto es un gran problema para mí. Utilizo tablas temporales que deben ser exclusivas para cada instancia de un informe que se ejecuta. No se pueden sobrescribir las tablas desde otra estación de trabajo. Necesitaba las tablas temporales para trabajar con mi procedimiento almacenado. Gracias. –

1

Esto puede ser un hilo viejo y se encuentra la respuesta, pero cuando alguien entra en su procedimiento almacenado después y ve este código, realmente no lo entiende. Hay otra manera de hacer esto correctamente y es simplemente declarar la tabla como una variable de la siguiente manera:

DECLARE @temp TABLE 
(
    SomeText1 nvarchar(255), 
    SomeText2 nvarchar(255) 
) 

Además, no se olvide de quitar la tabla caída al final.

PD: Si realmente necesita usar la tabla temporal porque necesita crearla, entonces debe escribir el código proporcionado en la respuesta anterior. Espero que esto ayude.

Cuestiones relacionadas