sql >> Base de Datos >  >> RDS >> Sqlserver

creando dinámicamente la tabla #temp y luego se usa para insertar los datos

Esto se debe a que el alcance del EXEC declaración es diferente al alcance del sproc contenedor. Es decir, su llamada a EXEC está creando la tabla temporal, y luego se elimina automáticamente como el ámbito para el EXEC es izquierda. Básicamente tienes que hacer todo dentro del uno EXEC declaración:

DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
            FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
            INSERT INTO #temp ...'

EXEC(@sql)