В SQL Server 2012 да. Появилась новая функция, которая будет извлекать метаданные на основе специальной строки SQL или имени объекта (см. https://sqlblog.org/2010/12/20/sql-server-v-next-denali-metadata-enhancements для получения более подробной информации об этом).
В более ранних версиях (вы забыли сообщить нам, какая версия) существуют некоторые менее надежные обходные пути. например,
SELECT * INTO #table FROM OPENROWSET('SQLNCLI',
'Server=(local);Trusted Connection=Yes;',
'EXEC yourdatabase.dbo.usp_branches;');
Для этого сначала нужно сказать:
EXEC sp_configure 'show adv', 1;
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'ad hoc dist', 1;
RECONFIGURE WITH OVERRIDE;
GO
Теперь вы можете построить оператор CREATE TABLE
на основе tempdb.sys.columns where name LIKE '#table%';
. Или безопаснее where [object_id] = OBJECT_ID('tempdb..#table');
.
Просто имейте в виду, что, как и в новой функциональности метаданных, если имеется более одного набора результатов (или форма может меняться в зависимости от ввода), все ставки отключены.