この投稿で @SQLMenace の助けを借りて、私にとってうまくいく解決策を見つけましたT-SQL 動的 SQL と一時テーブル
要するに、最初に通常の SQL で #temp テーブルを作成する必要があり、その後、さらに動的 SQL ステートメントを使用して構造を変更できます。この例では、@colcount は 6 に設定されています。これを実装すると、別のストアド プロシージャによって決定されます。
IF object_id('tempdb..#myTemp') IS NOT NULL
DROP TABLE #myTemp
CREATE TABLE #myTemp (id int IDENTITY(1,1) )
DECLARE @cmd nvarchar(max)
DECLARE @colcount int
SET @colcount = 6
DECLARE @counter int
SET @counter = 0
WHILE @counter < @colcount
BEGIN
SET @counter = @counter + 1
SET @cmd = 'ALTER TABLE #myTemp ADD col' + CAST(@counter AS varchar(4)) + ' NVARCHAR(MAX)'
EXEC(@cmd)
END
INSERT INTO #myTemp
EXEC myProc @param1, @param2, @param3
SELECT * FROM #myTemp