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