sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo uso la cláusula OUTPUT de una instrucción INSERT para obtener el valor de identidad?

Puede hacer que la ID recién insertada se envíe a la consola de SSMS de esta manera:

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Puede usar esto también desde, p. C#, cuando necesite devolver el ID a su aplicación de llamada, simplemente ejecute la consulta SQL con .ExecuteScalar() (en lugar de .ExecuteNonQuery() ) para leer el ID resultante volver.

O si necesita capturar el ID recién insertado dentro de T-SQL (por ejemplo, para un procesamiento posterior), debe crear una variable de tabla:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

De esta manera, puede poner múltiples valores en @OutputTbl y hacer más procesamiento en esos. También podría usar una tabla temporal "regular" (#temp ) o incluso una tabla persistente "real" como su "objetivo de salida" aquí.