Attualmente, sto cercando di eseguire un update
in SQL Server (ma potrebbe essere qualsiasi DML statement che supporti il output
clause) e vorrei mettere l'output in una tabella temporanea locale, in questo modo:Come utilizzare la clausola di output in SQL per inserire, aggiornare, eliminare i risultati nella nuova tabella temporanea?
update
dbo.MyTable
set
MyField = 30
output
inserted.MyKeyField
into
#myTempTable
from
dbo.MyTable as t
where
f.MyFilteredField = 8
so che la sintassi è corretta, come per la documentazione per il output
clausola (sottolineatura mia):
output_table
Specifies a table that the returned rows are inserted into instead of being returned to the caller. output_table may be a temporary table.
detto questo, mi aspetto che funzioni proprio come farebbe sul l'into
clause su un select
dichiarazione in quanto sarebbe jus t creare la tabella.
Tuttavia, ottengo il seguente errore:
Invalid object name '#myTempTable'.
Come posso ottenere i risultati del output
clausola (inserted
o deleted
) in una tabella temporanea?
È un peccato che questo sia il caso, dal momento che significa scegliere tra la perdita della convenienza del rilevamento del tipo di tabella temporanea o la duplicazione di codice significativa. – bwerks