Actualmente, estoy tratando de realizar una update
en SQL Server (pero podría ser cualquier DML statement que soporta el output
clause), y me gustaría poner el resultado en una tabla temporal local, así:¿Cómo usar la cláusula de salida en SQL para insertar, actualizar, eliminar resultados en una nueva tabla temporal?
update
dbo.MyTable
set
MyField = 30
output
inserted.MyKeyField
into
#myTempTable
from
dbo.MyTable as t
where
f.MyFilteredField = 8
sé que la sintaxis es correcta, según la documentación de la cláusula output
(el énfasis es mío):
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.
dicho esto, yo esperaría que funcione igual que lo haría en el la into
clause en una select
declaración en el sentido de que sería jus t crea la tabla.
Sin embargo, me sale el siguiente error:
Invalid object name '#myTempTable'.
¿Cómo puedo obtener los resultados de la cláusula output
(inserted
o deleted
) en una tabla temporal?
Desafortunadamente, este es el caso, ya que significa elegir entre perder la conveniencia de la detección del tipo de tabla temporal o una duplicación de código significativa. – bwerks