Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

creando dinamicamente la tabella #temp e quindi utilizzata per inserire i dati

Questo perché l'ambito di EXEC istruzione è diverso dall'ambito della sproc contenitore. Ovvero, la tua chiamata a EXEC sta creando la tabella temporanea, quindi viene automaticamente eliminata come ambito per EXEC è rimasto. Fondamentalmente devi fare tutto all'interno di uno EXEC dichiarazione:

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

EXEC(@sql)