Comment faire en sorte que le composant C # Query reconnaisse les données renvoyées par les colonnes d'une table temporaire dans une procédure stockée SQL

StackOverflow https://stackoverflow.com/questions/204155

Question

J'ai créé une procédure stockée similaire à celle ci-dessous (j'utilise cette version simplifiée pour essayer de comprendre le problème).

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

À partir de mon code C # dans VS2008, j'essaie d'utiliser le composant Query avec l'option Utiliser une procédure stockée existante pour le connecter à un DataTable / DataGridView afin d'afficher les résultats.

Toutefois, étant donné que je sélectionne dans une table temporaire, dans les propriétés du composant Query, Visual Studio n'affiche pas les colonnes renvoyées par la procédure stockée. Je suppose qu’il a du mal à déterminer les types de données utilisés, car le SP n’est pas basé sur un schéma réel.

La connexion à différentes procédures stockées qui sélectionnent dans des tables réelles affiche les colonnes correctement.

Est-ce que quelqu'un sait tout autour de ça? Y a-t-il une sorte d'indice que je peux ajouter quelque part pour indiquer explicitement quelle sorte de données sera renvoyée?

Merci d'avance.

Était-ce utile?

La solution

Pour plus d'informations, vous pouvez envisager d'utiliser une "variable de table". plutôt qu'une table temporaire (par exemple, @FOO plutôt que #FOO) - cela pourrait aider un peu, et cela aide certainement quelques problèmes de tempdb.

Avec les tables temporaires - non, il n’existe aucun moyen de déclarer explicitement le schéma SPs. Je suggérerais peut-être d’utiliser une version simplifiée du SP pendant que vous générez vos classes wrapper - c’est-à-dire qu’il fasse un SELECT trivial de la forme correcte.

Sinon, j'utiliserais LINQ pour utiliser un fichier UDF, ce qui a un schéma explicite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top