Debe mover TRUNCATE TABLE [dbo].[at_CurrencyRates];
fuera del procedimiento almacenado si lo está llamando 289 veces para insertar fila por fila.
Cada vez que llama al procedimiento almacenado, elimina todas las filas de la tabla, por lo que siempre terminará con la única fila que acaba de insertar.
Sería mejor modificar el procedimiento almacenado para hacer la inserción de todas las filas requeridas de una sola vez en lugar de solo una a la vez. Puede usar un parámetro con valores de tabla para pasar todas las filas deseadas, luego solo necesitaría un TRUNCATE
seguido de INSERT [dbo].[at_CurrencyRates] ... SELECT * FROM @TVP
.