Důvodem je rozsah EXEC
prohlášení se liší od rozsahu obsahujícího sproc. To znamená vaše volání EXEC
vytváří dočasnou tabulku a poté je automaticky zrušena jako rozsah pro EXEC
je ponecháno. V podstatě musíte udělat všechno uvnitř jednoho EXEC
prohlášení:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)