47 votes

Définir deux variables scalaires dans une seule instruction SELECT?

Je veux faire ceci :

Declare @a int;
Declare @b int;

SET @a,@b = (SELECT StartNum,EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b

Mais c'est une syntaxe invalide. Comment puis-je définir plusieurs variables scalaires dans une seule instruction select ? Je peux faire :

Declare @a int;
Declare @b int;

SET @a = (SELECT StartNum FROM Users Where UserId = '1223')
SET @b = (SELECT EndNum FROM Users Where UserId = '1223')

PRINT @a
PRINT @b

Mais cela prendra deux fois plus de temps. Quel est le moyen le plus rapide ?

114voto

juergen d Points 85039
DÉCLARER @a int;
DÉCLARER @b int;

SÉLECTIONNER @a = StartNum, @b = EndNum 
DEPUIS Utilisateurs 
OÙ UserId = '1223'

14voto

aF. Points 15815

Faites-le comme ça :

Déclarez @a int;
Déclarez @b int;

SELECT @a=StartNum,@b=EndNum FROM Users Where UserId = '1223'

PRINT @a
PRINT @b

5voto

rvazquezglez Points 383

Si vous faites cela dans une procédure stockée et que vous ne voulez pas que le résultat de la sélection soit dans un jeu de résultats de sortie, vous devrez utiliser le mot INTO.

Déclarer @a int;
Déclarer @b int;

SELECT StartNum, EndNum 
FROM Users 
Where UserId = '1223'
INTO @a, @b;

Il peut également être utilisé de cette manière :

SELECT StartNum, EndNum 
INTO @a, @b
FROM Users 
Where UserId = '1223';

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