如何让C#Query组件识别从sql存储过程中的临时表返回的数据列
-
03-07-2019 - |
题
我已经创建了一个类似下面的存储过程(我正在使用这个缩减版本来试图解决我们的问题)。
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, 具有显式模式。
不隶属于 StackOverflow