Няма нищо лошо в кода на вашата съхранена процедура - въпросът е:BULK INSERT
командата не може да приеме име на файл като променлива.
Това наистина работи:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
но това никога не работи - в рамките на съхранена процедура или не:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Така че просто не можете да го направите по този начин, за съжаление. Бихте могли да обмислите изграждането на вашето BULK INSERT
израз като низ (с фиксирано име на файл) и след това го изпълнете като динамичен SQL - но всъщност не виждам друго решение.
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