Der er ikke noget galt med din lagrede procedurekode - pointen er:
Dette virker:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
men dette virker aldrig - i en lagret proc eller ej:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Så du kan bare ikke gøre det på denne måde, desværre. Du kunne overveje at opbygge din BULK INSERT
sætning som en streng (med et fast filnavn) og derefter udføre den som dynamisk SQL - men jeg kan ikke rigtig se nogen anden løsning.
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