Сохранить типы столбцов хранимой процедуры

У меня есть хранимая процедура, которую я планирую использовать для SSRS, которая содержит более 50 различных столбцов. У меня есть другая процедура, которая ее выполняет, и я планирую вставить ее в таблицу результатов, но мне нужно заранее знать имена столбцов. Когда я пытаюсь выполнить, я получаю сообщение об ошибке:

Имя столбца или количество предоставленных значений не соответствует определению таблицы.

Я подозреваю, что это связано с тем, что один из моих столбцов имеет неправильный тип данных. Как я могу точно определить, к какому типу данных относятся эти столбцы для создания моей таблицы?

Мой оператор вставки:

insert into @resultset 
   exec my_proc

person aperture    schedule 28.10.2014    source источник
comment
Я думаю, что вам не хватает столбца или у вас есть дополнительный столбец - вы получите другое сообщение об ошибке для проблемы с типом данных. Какую версию SQL Server вы используете? Почему вы отметили это mysql?   -  person Aaron Bertrand    schedule 28.10.2014
comment
@AaronBertrand В настоящее время на студии управления SQL Server 2008, и я удалю тег, то есть Microsoft sql. Поскольку ошибка не очень подробная, как я могу извлечь эти столбцы процедур?   -  person aperture    schedule 28.10.2014
comment
Что ж, самым простым способом было бы просмотреть хранимую процедуру и подсчитать столбцы в конечном SELECT и проверить, соответствует ли хотя бы количество столбцов определению @resultset, и продолжить оттуда. На самом деле эти выходные данные нигде не хранятся в метаданных SQL Server, discovery.aspx" rel="nofollow noreferrer">хотя в SQL Server 2012 есть вспомогательные функции, которые могут помочь вам при обновлении.   -  person Aaron Bertrand    schedule 28.10.2014


Ответы (1)


В качестве быстрого обмана вы можете запустить внутреннюю часть хранимого процесса в виде оператора SQL и изменить последний оператор SELECT на что-то вроде:

SELECT TOP 0 columnlist
INTO ResultTable
FROM LastSelectStatement

Это даст вам как правильные номера столбцов, так и типы данных.

person Stuart Ainsworth    schedule 28.10.2014
comment
Я не думал просто взять массу кода и сделать его выборочным. Код длинный и запутанный, и это казалось лучшим ответом. Даже если это обман. :) - person aperture; 30.10.2014