2009-05-15 27 views
31

¿Puede alguien identificar las diferencias funcionales/de rendimiento, si existen, entre SET y SELECT en T-SQL? ¿En qué condiciones debo elegir una sobre la otra?SET vs. SELECT - ¿Cuál es la diferencia?


ACTUALIZACIÓN:
Gracias a todos los que respondieron. Como algunas personas señalaron, this artículo por Narayana Vyas Kondreddi tiene mucha información buena. También examinamos la red después de leer el artículo y encontré this versión condensada por Ryan Farley que ofrece los aspectos más destacados y pensé que podría compartir ellos:

  1. SET es el estándar ANSI para asignación de variables, no es SELECT.
  2. SET solo puede asignar una variable a por vez, SELECT puede realizar múltiples asignaciones a la vez.
  3. Si se asigna desde una consulta, SET puede asignar solo un valor escalar. Si la consulta devuelve múltiples valores/filas , SET generará un error. SELECT asignará uno de los valores de la variable y ocultar el hecho de que fueron devueltos múltiples valores (por lo que le probablemente nunca se sabe por qué algo iba mal en otro lugar - divertirse solución de problemas que uno)
  4. Al asignar de una consulta si hay hay valor devuelto a continuación, establezca se NULL Asignar, donde SELECT no realizar la asignación en absoluto (por lo que la variable no se cambiará de su valor anterior)
  5. en cuanto a las diferencias de velocidad - Hay no hay diferencias directas entre SET y SELECT. Sin embargo, la capacidad de de SELECT de realizar múltiples asignaciones de una sola vez le da una leve ventaja de velocidad sobre SET.
+0

buena actualización; estado usando ambos operadores durante aproximadamente 3 años, pero no me di cuenta de las diferencias – whytheq

Respuesta

24

SET es la forma estándar de ANSI de asignar valores a variables, y SELECT no. Pero puede usar SELECT para asignar valores a más de una variable a la vez. SET le permite asignar datos a solo una variable a la vez. De modo que en el rendimiento es donde SELECT será un ganador.

Para obtener más detalles y ejemplos se refieren a: Difference between SET and SELECT when assigning values to variables

3

set y seleccionar ambos valores asignar a las variables. Seleccione con la tecla puede asignar valores a más de una variable

algo como

seleccione @ var1 = 1, @ var2 = 2

donde como Utilizando el montaje tiene que usar bloques por separado (la una Forma ANSI de asignar valores), es decir,

conjunto @ var1 = 1

conjunto @ var2 = 2

espero que esto ayude a

aplausos

6

Establecer se ofrecen norma ANSI para asignar valores a las variables.

Seleccionar se puede utilizar al asignar valores a múltiples vairables.

Para más detalles por favor lea este post detallada por Narayana Vyas

7

SQL Server: una situación en la que usted tiene que utilizar SELECT es la hora de asignar @@ ERROR y @@ ROWCOUNT ya que estos tienen que establecerse en la misma instrucción (de lo contrario éstas hayan sido reconfiguradas):

SELECT @error = @@ERROR, @rowcount = @@ROWCOUNT 

(SET sólo funciona con un valor a la vez)

Cuestiones relacionadas