使用LinqtoSql,如何从存储过程中的临时表返回值?

3

我有一个存储过程,可以从临时表中返回值。但是在我的DBML中,它显示的返回类型是(None)。如何让它识别出我的临时表中的列?

CREATE PROCEDURE [dbo].[GetCategoryPriceRanges] 
@CategoryId int 
AS
BEGIN

DECLARE @MinPrice money, @MaxPrice money    
SELECT  @MinPrice = MIN(ourPrice),@MaxPrice = MAX(ourPrice)

DECLARE @loopCatch int

--catch infinite loops
SELECT @loopCatch = 1
WHILE @thisLow <= @maxPrice AND @loopCatch < 100
    BEGIN
        INSERT INTO #prices(lowRange, hiRange) VALUES (@thisLow, @thisHigh)
        SET @thisLow = @thisHigh + 1
        SET @thisHigh = 2 * @thisLow - 1
        SELECT @loopCatch = @loopCatch + 1
    END
SELECT * FROM #prices
DROP TABLE #prices
END
3个回答

2

如果您有一个返回相同列集的表,您可以将存储过程分配为在数据模型图中返回该类型。 (通过将存储过程拖放到它上面,或通过设置存储过程的属性来实现。)

或者您可以创建一个包含此列集的视图,并将存储过程分配为返回该视图。 (在存储过程的返回类型属性上。)


0
不确定旧版本的Visual Studio,但我正在使用2010版本,通过进入dbml设计器并添加一个类来解决问题。
然后在新类中添加存储过程将返回的临时表字段。即右键单击类并添加->属性。
然后将存储过程的返回类型设置为您新创建的类。

0

我通过在包含临时表的存储过程顶部添加SET FMTONLY OFF来解决了这个问题。 Visual Studio立即自动生成了类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接