C'est parce que la portée de l'EXEC
L'instruction est différente de la portée de la sproc contenante. Autrement dit, votre appel à EXEC
est en train de créer la table temporaire, puis elle est automatiquement supprimée en tant que portée pour le EXEC
est laissé. En gros, vous devez tout faire à l'intérieur de celui EXEC
déclaration :
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)