multiple into sql sql-server teradata

multiple - SQL SELECT multi-column INTO multi-variable



select into multiple variables oracle (2)

SELECT @var = col1, @var2 = col2 FROM Table

Aquí hay alguna información interesante sobre SET / SELECT

  • SET es el estándar ANSI para la asignación de variables, SELECT no lo es.
  • SET solo puede asignar una variable a la vez, SELECT puede hacer varias asignaciones a la vez.
  • Si se asigna desde una consulta, SET solo puede asignar un valor escalar. Si la consulta devuelve múltiples valores / filas, SET generará un error. SELECT asignará uno de los valores a la variable y ocultará el hecho de que se devolvieron múltiples valores (por lo que es probable que nunca se sepa por qué algo salió mal en otra parte; diviértase al resolverlo)
  • Al asignar desde una consulta si no se devuelve ningún valor, entonces SET asignará NULL, donde SELECT no realizará la asignación en absoluto (por lo que la variable no se cambiará de su valor anterior)
  • En cuanto a las diferencias de velocidad, no hay diferencias directas entre SET y SELECT. Sin embargo, la capacidad de SELECT para realizar múltiples asignaciones en un solo disparo le da una ligera ventaja de velocidad sobre SET.

Estoy convirtiendo SQL de Teradata a SQL Server

En Teradata, tienen el formato.

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

En SQL Server, encontré

SET @variable1 = ( SELECT col1 FROM table1 );

Eso solo permite una sola columna / variable por sentencia. ¿Cómo asignar 2 o más variables usando una sola instrucción SELECT?


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