72 votes

SQL SELECT multi-colonnes INTO multi-variables

Je convertis SQL de Teradata en SQL Server

à Teradata, ils ont le format

 SELECT col1, col2
FROM table1
INTO @variable1, @variable2
 

Dans SQL Server, j'ai trouvé

 SET @variable1 = (
SELECT col1 
FROM table1
);
 

Cela ne permet qu'une seule colonne / variable par déclaration. Comment assigner 2 variables ou plus en utilisant une seule instruction SELECT?

152voto

David M Points 45808
SELECT @variable1 = col1, @variable2 = col2
FROM table1

35voto

Svetlozar Angelov Points 10583
SELECT @var = col1,
       @var2 = col2
FROM   Table

Voici quelques informations intéressantes sur SET / SELECT

  • JEU de est la norme ANSI pour l'attribution de la variable, SÉLECTIONNEZ ne l'est pas.
  • JEU ne peut affecter une variable à la fois, SÉLECTIONNEZ pouvez faire plusieurs les affectations à la fois.
  • Si l'affectation à partir d'une requête, un JEU ne peut attribuer une valeur scalaire. Si l' requête renvoie plusieurs valeurs/lignes puis DÉFINISSEZ déclenchera une erreur. SÉLECTIONNEZ va attribuer l'une des valeurs de la variable et à cacher le fait que plusieurs valeurs ont été retournés (donc vous seriez probablement jamais savoir pourquoi quelque chose qui n'allait d'ailleurs s'amuser dépannage celle-là)
  • Lors de l'affectation à partir d'une requête si aucune valeur n'est retournée ensuite ENSEMBLE affecter NULL, où SELECT n'est pas procéder à la cession à tout (alors que le variable ne doit pas être modifié à partir, il est valeur précédente)
  • Autant que les différences de vitesse - il n'existe pas de différences entre SET et SÉLECTIONNEZ. Cependant SÉLECTIONNEZ la capacité d' pour faire des tâches multiples dans un tir fait de lui donner un léger vitesse avantage sur le JEU.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X