我已经创建了一个类似下面的存储过程(我正在使用这个缩减版本来试图解决我们的问题)。

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

从我在VS2008中的C#代码中,我正在尝试使用带有使用现有存储过程选项的Query组件将其连接到DataTable / DataGridView以显示结果。

但是,因为我从临时表中进行选择,所以在查询组件属性中,Visual Studio不会显示从存储过程返回的任何列。我认为它确定正在使用的数据类型有困难,因为SP不是基于真实模式。

连接到从真实表中选择的不同存储过程会正确显示列。

有没有人知道这个?是否有某种提示我可以在某处明确说明将返回哪种数据?

提前致谢。

有帮助吗?

解决方案

有关信息,您可以考虑使用“表格变量”。而不是一个临时表(即@FOO而不是#FOO) - 这可能有点帮助,它肯定有助于一些tempdb问题。

使用临时表 - 没有办法明确声明SP模式。我建议在生成包装类时使用SP的简化版本 - 即让它对正确的形状进行简单的选择。

或者,我会使用LINQ来使用UDF, 具有显式模式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top