2012-02-03 14 views
32

Quiero hacer esto:¿Establecer dos variables escalares en una instrucción SELECT?

Declare @a int; 
Declare @b int; 

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

PRINT @a 
PRINT @b 

Pero esta es una sintaxis no válida. ¿Cómo configuro múltiples variables escalares en una declaración select? Puedo hacer:

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 

Pero esto llevará el doble de tiempo. ¿Cuál es la manera más rápida?

Respuesta

68
DECLARE @a int; 
DECLARE @b int; 

SELECT @a = StartNum, @b = EndNum 
FROM Users 
WHERE UserId = '1223' 
+0

Niza, gracias. Tengo problemas para resolver la sintaxis de SQL. Hay muchas palabras clave y estructuras que se pueden usar de varias maneras inesperadas. – Oliver

+0

@Oliver debes votar y aceptar una de las respuestas :) –

+0

@aF. ¡Lo siento! Me distraje y olvidé revisar cuando el límite de aceptación de 12 minutos estaba arriba. – Oliver

10

hacerlo de esta manera:

Declare @a int; 
Declare @b int; 

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

PRINT @a 
PRINT @b 
1

Si usted está haciendo esto en un procedimiento almacenado y no desea que el resultado de la selección en un conjunto de resultados de salida que tendrá que utilizar la palabra EN .

Declare @a int; 
Declare @b int; 

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

También se puede utilizar la siguiente manera:

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