Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

die #temp-Tabelle dynamisch erstellt und dann zum Einfügen der Daten verwendet wird

Dies liegt daran, dass der Umfang der EXEC -Anweisung unterscheidet sich vom Geltungsbereich des enthaltenden Sproc. Das heißt, Ihr Aufruf von EXEC erstellt die temporäre Tabelle und wird dann automatisch als Bereich für EXEC gelöscht ist übrig. Sie müssen im Grunde alles innerhalb des Einen erledigen EXEC Aussage:

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

EXEC(@sql)