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

Tabelle abschneiden und dann Daten in dieselbe Tabelle einfügen fügt nur 1 Datensatz ein

Sie müssen TRUNCATE TABLE [dbo].[at_CurrencyRates]; verschieben aus der gespeicherten Prozedur heraus, wenn Sie sie 289 Mal aufrufen, um Zeile für Zeile einzufügen.

Jedes Mal, wenn Sie die gespeicherte Prozedur aufrufen, löscht sie alle Zeilen aus der Tabelle, sodass Sie am Ende immer nur die eine Zeile haben, die Sie gerade eingefügt haben.

Besser wäre es, die gespeicherte Prozedur so zu ändern, dass alle erforderlichen Zeilen auf einmal eingefügt werden, anstatt nur eine nach der anderen. Sie können einen Tabellenwertparameter verwenden, um alle gewünschten Zeilen zu übergeben, dann bräuchten Sie nur ein TRUNCATE gefolgt von einem INSERT [dbo].[at_CurrencyRates] ... SELECT * FROM @TVP .