Y a-t-il un moyen de définir une variable à l'intérieur d'une expression comme celle-ci?
5 Réponses :
Votre code ressemble à T-SQL.
Dans T-SQL, vous ne pouvez pas retourner un ensemble de résultats et définir une valeur de variables dans la même instruction SELECT, CTE ou non. P>
Le code suivant n'est pas valide dans T-SQL: strong> p> et il serait toujours invalide si l'instruction SELECT CODE> était une partie d'une expression de table commune. P> En outre, une expression de table commune doit contenir une instruction SELECT qui renvoie un ensemble de résultats - afin que vous ne puissiez pas faire quelque chose comme ceci: P>
with cte as
(
select @var1 = someColumn
from someTable
)
Merci mais ma question est quelque chose d'autre.
quelque chose d'autre de quelle manière?
Les variables définies seront utilisées dans un autre CTE
La définition d'une variable dans T-SQL est effectuée avec le mot-clé déclarer code>, pas lors de la définition de sa valeur.
Vous ne pouvez pas Pour votre requête, vous devez le faire en 2 parties seulement. D'abord pour définir votre valeur variable. Deuxième requête pour obtenir l'enregistrement de résultat dans le format de tableau. P> Bien qu'il ne soit pas nécessaire de définir votre valeur de variable au milieu de votre requête. P> Vous obtenez les valeurs de variable ou obtenez les données dans Sélectionner une instruction. P> P> Sélectionner code> et
définir code> dans une seule instruction.
Non, vous ne pouvez pas. Le DOCS pour le et la cte_query_definition strong> est (met l'accent sur la mine): P> Spécifie une instruction SELECT dont le jeu de résultats remplit le commun
expression de table. l'instruction SELECT pour cte_query_definition doit
répondre aux mêmes exigences que pour créer une vue forte>, sauf un CTE ne peut pas
Définir un autre CTE. Pour plus d'informations, voir la section Remarques et
Créer une vue (transact-sql). P>
blockQquote> Dans une vue Vous ne pouvez pas définir de variables, vous ne pourrez donc pas les définir dans un CTE également. P> P>
Ce n'est pas entièrement précis - vous pouvez utiliser des variables dans une table commune, vous ne pouvez tout simplement pas définir leurs valeurs.
Correct, je voulais dire les définir.
Il n'y a aucun moyen de définir une variable dans un CTE
Si vous spécifiez vos exigences, nous pourrions trouver une meilleure solution p>
Cependant, ma suggestion n'est pas d'utiliser CTE mais d'aller avec la table TEMP et de travailler à partir de il p>
La documentation officielle de CTE est sur Microsoft SQL DOCS
WITH [CTE2] AS ( SELECT dbo.yourFunction1(t.column_i) as var1 , dbo.yourFunction2(t.column_j) as var2 FROM dbo.[CTE] t WHERE yourFunctionX(t.column_p) = 100 AND t.column_q IS NOT NULL ); declare @var1 varchar(500), @var2 varchar(500); Select @var1 = t2.var1, @var2 = t2.var2 from [CTE2] t2;
En fait, après avoir attribué des valeurs à la variable, pourquoi vous sélectionnez la requête
CTE2 CODE>. Qu'essayez-vous d'atteindre?
@Darkrob parce que je veux l'utiliser dans un autre CTE