Sí, puede usar la cláusula OUTPUT poco conocida y poco utilizada en su declaración INSERT
INSERT INTO dbo.YourTable(col1, col2, col3, ...., ColN)
OUTPUT Inserted.Col1, Inserted.Col5, Inserted.ColN
VALUES(val1, val2, val3, ....., valN)
Esto devuelve un conjunto normal de datos, que puede manejar según lo necesite.
Como muestran los documentos de MSDN, también puede enviar los valores de SALIDA a, p. una variable de tabla o una tabla temporal para su uso posterior, si es necesario.
Para responder a su pregunta actualizada, use esto:
INSERT INTO dbo.EMPDETAILS(EmpName)
OUTPUT Inserted.EmpID
VALUES("John")