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)