¿Cómo consigo que el componente C # Query reconozca las columnas que devuelven datos de una tabla temporal en un procedimiento almacenado sql

StackOverflow https://stackoverflow.com/questions/204155

Pregunta

He creado un procedimiento almacenado similar al siguiente (estoy usando esta versión reducida para tratar de resolver el problema).

CREATE PROCEDURE bsp_testStoredProc
AS
BEGIN

CREATE TABLE #tmpFiles  
(
    AuthorName NVARCHAR(50), 
    PercentageHigh INT
) 

-- Insert data into temp table

SELECT AuthorName, PercentageHigh FROM #tmpFiles 
ORDER BY PercentageHigh DESC

DROP TABLE #tmpFiles

RETURN 0
END

Desde mi código C # en VS2008, estoy tratando de usar el componente de consulta con la opción Usar procedimiento almacenado existente para conectar esto a un DataTable / DataGridView para mostrar los resultados.

Sin embargo, debido a que selecciono una tabla temporal, en las propiedades del componente Consulta Visual Studio no muestra ninguna columna que se devuelva del procedimiento almacenado. Supongo que tiene problemas para determinar los tipos de datos que se utilizan, ya que el SP no se basa en un esquema real.

La conexión a diferentes procedimientos almacenados que seleccionan de tablas reales muestra las columnas correctamente.

¿Alguien sabe de esto? ¿Hay algún tipo de sugerencia que pueda agregar en algún lugar para indicar explícitamente qué tipo de datos se devolverán?

Gracias de antemano.

¿Fue útil?

Solución

Para obtener información, puede considerar usar una " variable de tabla " en lugar de una tabla temporal (es decir, @FOO en lugar de #FOO): esto podría ayudar un poco, y ciertamente ayuda con algunos problemas tempdb.

Con tablas temporales: no, no hay forma de declarar explícitamente el esquema de SP. Quizás sugiera usar una versión simplificada del SP mientras genera sus clases de envoltura, es decir, haga que haga una SELECCIÓN trivial de la forma correcta.

Alternativamente, usaría LINQ para consumir un UDF, que tiene un esquema explícito.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top