FillSchema y tablas temporales.
Por: alex | 1 Junio 2006 | Ver comentarios |
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:
DataTable tabla = new DataTable();
using (SqlDataAdapter da = new SqlDataAdapter("sp_test", "CadenaConexion"))
{
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.FillSchema(tabla, SchemaType.Source);
}Y el procedimiento tenía una estructura parecida a:
create procedure sp_test 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

