Sim - você pode usar a pouco conhecida e pouco usada cláusula OUTPUT em sua instrução INSERT
INSERT INTO dbo.YourTable(col1, col2, col3, ...., ColN)
OUTPUT Inserted.Col1, Inserted.Col5, Inserted.ColN
VALUES(val1, val2, val3, ....., valN)
Isso retorna um conjunto normal de dados, com os quais você pode lidar conforme necessário.
Como mostram os documentos do MSDN, você também pode enviar os valores OUTPUT para, por exemplo, uma variável de tabela ou tabela temporária para uso posterior, se necessário.
Para responder à sua pergunta atualizada, use isto:
INSERT INTO dbo.EMPDETAILS(EmpName)
OUTPUT Inserted.EmpID
VALUES("John")