Je suis un novice en SQL et je suis à la suite d'un tutoriel Web. J'ai rencontré un morceau de code où Select Instruction attribue une valeur à une variable. Je soupçonne que de telles instructions de sélection ne font pas une table en conséquence. Par exemple. Lorsque je veux mélanger l'affectation avec un nom de colonne comme dans: i Obtenir l'erreur suivante: p> msg 141, niveau 15, état 1, ligne 4 (suivant ce Course Sur internet avec Base de données ) P > Ma question est que s'il existe une autre forme de manipulation de données (comme une affectation) que dans une instruction SELECT ne produisent pas de table (si mon hypothèse est correcte). P> P>
Une instruction SELECT qui attribue une valeur à une variable ne doit pas être combinée à des opérations de récupération de données. P>
blockQuote>
3 Réponses :
Vous voulez convertir de la ligne à la colonne de ligne unique droite
Merci, c'est une solution rapide de la boîte.
Pour répondre à votre question littéralement:
Quand sélectionnez-vous ne pas créer une table sous forme de sortie p> blockQuote>
jamais! p>
Le
Sélectionnez CODE> renvoie un ensemble de résultats, composé de lignes et de chaque ligne constituée de colonnes. P>
Il y a Une situation spéciale, lorsque votre jeu de résultats revient avec exactement une ligne em> avec une seule colonne em>. Cela peut être pris comme une valeur scalaire
forte> et est donc attribuée à une variable. P> Vous pouvez appliquer une seule ligne avec un
top 1 code> ou avec un
où code> -crause qui garantit de retourner plus d'une ligne. Mais le moteur ne verra pas cela à l'avance. Votre code fourni mentionne deux colonnes, celle avec le
quotename () code> et - après la virgule - une fois de plus le
catégorie_name code>. C'est pourquoi vous obtenez l'exception. P>
C'est une situation similaire, lorsque vous souhaitez tester une liste, par exemple. Avec p>
xxx pré> la sélection dans le
in () code> retourne une liste des valeurs d'identification, mais il n'y aura qu'une colonne. P>
Mettez à jour quelques astuces sur votre code ... H2>
Qu'est-ce que vous faites ici: P>
SELECT @columns=STRING_AGG(QUOTENAME(COLUMN_NAME),',') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='spt_fallback_db'; SELECT @columns;
Merci pour la réponse, Shnugo. Cela m'a donné quelque chose à mâcher de la manière dont la manière dont les fonctions de sélection.
Peu importe ce que vous faites, Création d'une procédure stockée avec beaucoup de critères vous permet de renvoyer une table ou de retourner une variable. p> dans votre résultat: p> La sortie de Sélectionnez CODE> retournera toujours une table.
stockéProcoDureTest code>: p>
stockéProcoDureTest code> est: this_is_input_abc p> p>
Cela pourrait être une question de goût, mais c'est - dans mes yeux - un très mauvais conseil d'utiliser une procédure stockée pour cela. Le mieux était un inline TVF i>, que vous pouvez appliquer code> à votre requête. Ce speur vous oblige à Pensée procédurale i>, loin de la pensée bien meilleure basée sur le jeu i> ...
Votre réponse ne répond pas à la question réellement ... L'OP souhaite créer une liste concaténée de tous les valeurs code> Catégorie_name CODE> dans une table ... J'espère que vous ne suggérerez pas d'utiliser un curseur code> avec ce sp ...
L'erreur vous dit le problème. Vous essayez d'attribuer la valeur de
@Columns code> et b> renvoyer la valeur de
catégorie_name code>. L'erreur, j'ai peur, ne peut pas être plus claire. Un
Sélectionnez CODE> ne peut en faire qu'un, ou l'autre, mais pas tous les deux.
Je ne comprends pas votre question: S'il existe une autre forme de manipulation de données (comme une affectation) que dans une instruction SELECT ne produisent pas de table (si mon hypothèse est correcte). I>. Si vous avez pris
catégorie_name code> de cette instruction, ce serait une sélection de la tâche et de ne pas produire de résultat
Stackoverflow.com/Questtions/3945361/... < / a>
Oui, tu as raison. Mais ma question est la suivante: "Est-ce qu'il existe une autre forme de manipulation de données (comme une affectation) que dans une instruction SELECT ne produisent pas de table (si mon hypothèse est correcte)."
Si vous souhaitez affecter toutes les valeurs en variable, la partie suivante du code vous aidera à vous aider; @Columns = String_agg (Nom de la catégorie, ';') au sein du groupe (commander par catégorie_name)
Ce n'est pas un bon "tutoriel" - plutôt, il semble que ce soit un groupe de sujets regroupés dans des sections qui ne vous guident pas réellement ou ne construisent pas les compétences dans une méthode pour encourager le succès. Trouve un autre. Un pivot est quelque chose que vous devriez partir jusqu'à votre maîtrise de base SQL. Ce que vous essayez de faire est un pivot dynamique qui est encore plus complexe. Et cet usage utilise un "truc" aux cordes agrégées découragées.
Quiconque a voté cela: veuillez garder à l'esprit que ceci est un nouveau contributeur et des États semblables à être novices avec le sujet. Voici quelqu'un qui essaie d'apprendre quelque chose. Aucune raison de mettre un vers le bas ... La question est claire et non stupide de quelque manière que ce soit. +1 de mon côté.