На самом деле INSERT..EXEC попытается вставить ОБА наборы данных в таблицу. Если количество столбцов совпадает и тип данных может быть неявно преобразован, тогда вы фактически получите оба.
В противном случае он всегда будет неудачным, потому что нет способа получить только один из наборов результатов.
Решение этой проблемы состоит в том, чтобы извлечь нужную функциональность из вызываемой процедуры и включить ее в (ранее) вызывающую процедуру. И помните при этом, что «SQL не похож на код клиента: избыточный код более приемлем, чем избыточные данные».
В случае, если это не было ясно выше, позвольте мне описать факты и варианты, доступные любому в этой ситуации:
1) Если два возвращенных набора результатов совместимы, то вы можете получить оба в одной таблице с помощью INSERT и попытаться удалить те, которые вам не нужны.
2) Если два набора результатов несовместимы, тогда INSERT..EXEC не может работать.
3) Вы можете скопировать код из вызванной процедуры и повторно использовать его в вызывающей программе, а также справиться со стоимостью обслуживания с двойным редактированием.
4) Вы можете изменить вызванную процедуру, чтобы она работала более совместимо с другими вашими процедурами.
Вот и все. Это ваш выбор в T-SQL для этой ситуации. Существуют некоторые дополнительные приемы, которые вы можете использовать с SQLCLR или клиентским кодом, но они будут включать в себя немного другие действия.