2008-11-30 6 views
3

J'ai une procédure stockée qui renvoie des valeurs d'une table temporaire. Dans mon DBML, il affiche (Aucun) pour le type de retour. Quel est le truc pour l'obtenir pour reconnaître les colonnes de ma table temporaire?En utilisant LinqtoSql, comment puis-je retourner des valeurs d'une table temporaire dans un SPROC?

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 

Répondre

2

Si vous avez une table qui renvoie le même ensemble de colonnes, vous pouvez affecter la procédure stockée pour renvoyer ce type dans le diagramme du modèle de données. (soit en faisant glisser la prcoedure stockée sur celle-ci, soit en la définissant dans les propriétés de la procédure stockée.)

Vous pouvez également créer une vue avec cet ensemble de colonnes et affecter la procédure stockée pour la renvoyer. (Sur la propriété type de retour de la procédure stockée.)

0

Je ne suis pas sûr des anciennes versions de Visual Studio, mais j'utilise 2010 et j'ai résolu le problème en accédant au concepteur dbml et en ajoutant une classe.

Ensuite, dans la nouvelle classe, ajoutez les champs de la table temporaire que le proc stocké retournera. c'est-à-dire que vous faites un clic droit sur Class et Add -> Property.

Définissez ensuite le type de retour du proc stocké sur votre classe nouvellement créée.

0

J'ai résolu cela en ajoutant SET FMTONLY OFF en haut des procédures stockées contenant les tables temporaires. Visual Studio a rapidement généré automatiquement les types.

Questions connexes