Одним из способов будет переключение исходной хранимой процедуры на пользовательскую функцию, которая приводит к TABLE. Тогда вы можете сделать (например,):
SELECT id, value1, value2
FROM dbo.fxnMyFunctionThatReturns250Columns('SomeParameter') x
«Неудобная» вещь в этом - это сценарий, в котором вы хотите, чтобы только 3 столбца всегда имели накладные расходы / попадание при возврате всех 250 столбцов.
Это то, что вполне может стоить иметь отдельное sproc, поскольку это может означать, что сценарий с 3 столбцами может привести к гораздо более оптимальному плану выполнения.