Да - вы можете использовать малоизвестное и малоиспользуемое предложение OUTPUT в своем выражении INSERT
INSERT INTO dbo.YourTable(col1, col2, col3, ...., ColN)
OUTPUT Inserted.Col1, Inserted.Col5, Inserted.ColN
VALUES(val1, val2, val3, ....., valN)
Это возвращает нормальный набор данных, с которыми вы можете иметь дело, когда вынужно.
Как показывают документы MSDN, вы также можете отправить значения OUTPUT, например, в табличную переменную или временную таблицу для дальнейшего использования, если вам нужно.
Чтобы ответить на ваш обновленный вопрос, используйте это:
INSERT INTO dbo.EMPDETAILS(EmpName)
OUTPUT Inserted.EmpID
VALUES("John")