Я пытаюсь использовать переменный путь к файлу в команде SQL Openrowset. Я знаю, что он не может явно принимать переменную и что мне нужно использовать динамический SQL.
Что сейчас работает -
SELECT @file_stream = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(BULK 'C:\Temp\print4.pdf', SINGLE_BLOB) AS x
Однако, если я попытаюсь использовать свой переменный путь к файлу
declare @file_stream VARBINARY(MAX)
declare @filePath NVARCHAR(128)
set @filePath = 'C:\Temp\print4.pdf'
set @command = N'SELECT @file_stream = CAST(bulkcolumn AS varbinary(MAX))
from OPENROWSET(BULK ' + @filePath + ',
SINGLE_BLOB) ROW_SET'
EXEC sp_executesql @command, @filePath, @file_stream;
Я получаю сообщение об ошибке «Сообщение 137, уровень 15, состояние 2, строка 15. Необходимо объявить скалярную переменную @filePath».
Я уверен, что это проблема синтаксиса, но пока не смог понять, как его следует форматировать.