Если вы можете изменить свою хранимую процедуру, вы можете легко указать количество необходимых столбцов в качестве параметра:
CREATE PROCEDURE sp_GetDiffDataExample
@columnsStatement NVARCHAR(MAX) -- Needed columns
AS
BEGIN
DECLARE @query NVARCHAR(MAX)
SET @query = N'SELECT ' + @columnsStatement + N' INTO ##TempTable FROM dbo.TestTable'
EXEC sp_executeSql @query
SELECT * FROM ##TempTable
DROP TABLE ##TempTable
END
В этом случае вам не нужно создавать временную таблицу вручную - она создается автоматически. Надеюсь, это поможет.