¿Hay alguna forma "simple" de hacer esto o necesito pasar por una variable de tabla con la sintaxis "OUTPUT ... INTO"?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
sql-server
tsql
Benoittr
fuente
fuente
output
?DECLARE @InsertedIDResults TABLE (ID int); INSERT INTO MyTable (Name, Age) OUTPUT INSERTED.ID INTO @InsertedIDResults VALUES('My Name', 30); DECLARE @InsertedID int = (SELECT TOP 1 ID FROM @InsertedIDResults);
Más de un año después ... si lo que necesita es obtener el ID generado automáticamente de una tabla, puede simplemente
De lo contrario, parece que estás atascado con el uso de una tabla.
fuente
Mucho más tarde, pero aún vale la pena mencionar, es que también puede usar variables para generar valores en la cláusula SET de una ACTUALIZACIÓN o en los campos de un SELECCIONAR;
En el ejemplo anterior, @ val1 tiene el valor anterior y @ val2 tiene el valor posterior, aunque sospecho que cualquier cambio de un disparador no estaría en val2, por lo que tendría que ir con la tabla de salida en ese caso. Para todo menos el caso más simple, creo que la tabla de salida también será más legible en su código.
Un lugar en el que esto es muy útil es si desea convertir una columna en una lista separada por comas;
fuente
SET @val2 = NextNum = NextNum + 1
.