Если вы хотите вкладывать вызовы хранимых процедур или использовать динамический SQL, то в итоге вы будете использовать временные таблицы вместо табличных переменных.Вам все еще нужно будет определить таблицу заранее, но вы заполните ее следующим образом:
INSERT INTO #t EXEC sp_executesql @cmd
Другие процессы, которые Andomar предлагает для вашего конкретного сценария, будут работать хорошо.
Если у вас есть возможность, я бы преобразовал эту хранимую процедуру в функцию, а затем просто использовал бы:
INSERT INTO [TableA].dbo.Main (ID, timeID)
SELECT ID,
dbo.getTimeID(date)
FROM [TableB].dbo.Main