Используя LinqtoSql, как я могу вернуть значения из временной таблицы в SPROC? - PullRequest
3 голосов
/ 30 ноября 2008

У меня есть хранимая процедура, которая возвращает значения из временной таблицы. В моем DBML он отображает (нет) для типа возвращаемого значения. Что за хитрость заставляет его распознавать столбцы из моей временной таблицы?

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 голосов
/ 30 ноября 2008

Если у вас есть таблица, которая возвращает тот же набор столбцов, вы можете назначить хранимую процедуру для возврата этого типа на диаграмме модели данных. (Либо путем перетаскивания сохраненного prcoedure на него, либо путем установки его в свойствах хранимой процедуры.)

В качестве альтернативы вы можете создать представление с этим набором столбцов и назначить хранимую процедуру для его возврата. (О свойстве возвращаемого типа хранимой процедуры.)

0 голосов
/ 09 октября 2010

Я решил это, добавив SET FMTONLY OFF вверху хранимых процедур, содержащих временные таблицы. Visual Studio быстро сгенерировал типы автоматически.

0 голосов
/ 31 августа 2010

Не уверен насчет старых версий visual studio, но я использую 2010 и решил проблему, зайдя в конструктор dbml и добавив класс.

Затем в новом классе добавьте поля из временной таблицы, которые вернет сохраненный процесс. т.е. щелкните правой кнопкой мыши по Класс и Добавить -> Свойство.

Затем установите тип возвращаемого значения сохраненного процесса равным вновь созданному классу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...