4

我创建了一个类似于下面的存储过程(我正在使用这个缩减版本来尝试找出我们的问题)。

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# 代码中,我尝试使用带有使用现有存储过程选项的查询组件将其连接到 DataTable / DataGridView 以显示结果。

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

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

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

提前致谢。

4

1 回答 1

1

对于信息,您可能会考虑使用“表变量”而不是临时表(即@FOO 而不是#FOO) - 这可能会有所帮助,而且它肯定有助于解决一些 tempdb 问题。

使用临时表 - 不,没有办法明确声明 SP 架构。我可能会建议您在生成包装类时使用 SP 的简化版本 - 即让它执行正确形状的简单 SELECT。

或者,我会使用 LINQ 来使用 UDF,它确实具有显式架构。

于 2008-10-15T10:03:23.990 回答