Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

créant dynamiquement la table #temp puis utilisée pour insérer les données

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)