Ottenuto una query SELECT complessa, dalla quale vorrei inserire tutte le righe in una variabile di tabella, ma T-SQL non lo consente.SELEZIONA INTA una variabile di tabella in T-SQL
Lungo le stesse linee, non è possibile utilizzare una variabile di tabella con le query SELECT INTO o INSERT EXEC. http://odetocode.com/Articles/365.aspx
Breve esempio:
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
I dati nella variabile di tabella verrebbe poi utilizzato per inserire/aggiornare nuovamente in tabelle diverse (per lo più copia degli stessi dati con aggiornamenti minori). L'obiettivo sarebbe semplicemente di rendere lo script un po 'più leggibile e più facilmente personalizzabile rispetto al fare lo SELECT INTO
direttamente nelle tabelle giuste. Le prestazioni non sono un problema, poiché lo rowcount
è piuttosto piccolo e viene eseguito manualmente solo quando necessario.
... o dimmi solo se sto sbagliando tutto.
Se "SELEZIONA nome, posizione FROM myTable" come valori che inserirai nella tabella UserData, non importa se i nomi delle variabili nella select corrispondono ai nomi nella definizione della tabella. Stai selezionando 'name' per andare nella variabile 'name' del UserData, ma stai selezionando 'location' e in qualche modo assegnandolo alla variabile 'oldlocation' di UserData. SQL li mapperà automaticamente o genererà qualche tipo di eccezione? –
Non importa il nome, solo il tipo di colonna. – CristiC
Wow questo tipo di ha senso ma allo stesso tempo il parser in me si sente un po 'offeso :) –