Non c'è niente di sbagliato nel codice della procedura memorizzata:il punto è:il BULK INSERT
comando non può accettare un nome file come variabile.
Questo funziona:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
ma questo non funziona mai, all'interno di un processo memorizzato o meno:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Quindi non puoi farlo in questo modo, sfortunatamente. Potresti prendere in considerazione l'idea di creare il tuo BULK INSERT
istruzione come una stringa (con un nome di file fisso) e quindi eseguirlo come SQL dinamico, ma in realtà non vedo nessun'altra soluzione.
DECLARE @filepath nvarchar(500)
SET @filepath = N'e:\5-digit Commercial.csv'
DECLARE @bulkinsert NVARCHAR(2000)
SET @bulkinsert =
N'BULK INSERT ZIPCodes FROM ''' +
@filepath +
N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'
EXEC sp_executesql @bulkinsert