Je suis sûr que cela est discuté quelque part, mais après avoir cherché pendant un moment je ne peux pas le trouver.Résultats des requêtes à la liste dans SP
Je crée une procédure stockée pour SQL 2000 et j'ai besoin de construire une liste de nombres que je peux utiliser dans une fonction IN.
La requête ressemble à ceci
SELECT DISTINCT type FROM dbo.table WHERE building = @currentBuilding
Ceci renvoie généralement entre 1-5 résultats, je suis à la recherche d'un moyen de mettre cela en un nvarchar ou quelque chose.
Je voudrais rêver il y a un moyen facile de le faire puisque c'est dans une colonne mais j'ai l'impression que je vais finir par itérer sur les résultats.
En tant que côté, nvarchar est-il la bonne variable à utiliser? Y a-t-il une meilleure façon de stocker ceux qui permettraient de travailler plus rapidement?
Merci!
Je suppose que il y a une raison pour laquelle vous ne pouvez pas juste mettre la requête directement dans la clause 'IN'? –
@Martin Smith: Je pourrais juste le mettre dans la clause IN, mais je dois l'utiliser plusieurs fois, donc j'ai pensé que ce serait plus facile sur le serveur si je l'ai stocké comme variable. – Shaded
Pas nécessairement. Cela dépend du coût de calcul. En supprimant la requête de son contexte d'origine, vous risquez de priver l'optimiseur de requêtes de certaines chances d'optimisation en fonction de la façon dont vous l'utilisez. Je présume que vous devez maintenant utiliser SQL dynamique ou une fonction de split pour l'utiliser? Si c'est le cas, une variable de table de colonne unique avec 'PRIMARY KEY' sur la colonne' type' pourrait être meilleure, sauf si vous avez besoin de passer la liste entre différentes procédures. –