Tengo una consulta SELECT compleja, desde la que me gustaría insertar todas las filas en una variable de tabla, pero T-SQL no lo permite.SELECCIONAR EN una variable de tabla en T-SQL
En la misma línea, no puede usar una variable de tabla con las consultas SELECT INTO o INSERT EXEC. http://odetocode.com/Articles/365.aspx
ejemplo corto:
declare @userData TABLE(
name varchar(30) NOT NULL,
oldlocation varchar(30) NOT NULL
)
SELECT name, location
INTO @userData
FROM myTable
INNER JOIN otherTable ON ...
WHERE age > 30
Los datos de la variable de tabla se utilizó posteriormente para insertar/actualizar de nuevo en tablas diferentes (en su mayoría copia de los mismos datos con actualizaciones menores). El objetivo de esto sería simplemente hacer que el guión sea un poco más legible y más fácil de personalizar que haciendo el SELECT INTO
directamente en las tablas correctas. El rendimiento no es un problema, ya que el rowcount
es bastante pequeño y solo se ejecuta manualmente cuando es necesario.
... o solo dime si lo estoy haciendo todo mal.
Si selecciona "nombre, ubicación FROM myTable" como los valores que va a insertar en la tabla UserData, no importa si los nombres de las variables en la selección coinciden con los nombres en la definición de la tabla. Está seleccionando 'nombre' para ir a la variable 'nombre' UserData, pero está seleccionando 'ubicación' y de alguna manera asignándola a la variable UserData 'oldlocation'. ¿SQL solo asignará estos automáticamente o arrojará algún tipo de excepción? –
No importa el nombre, solo el tipo de columna. – CristiC
Wow, eso tiene sentido, pero al mismo tiempo el analizador en mí se siente un poco ofendido :) –