Как я могу использовать переменную в "openrowset"? - PullRequest
0 голосов
/ 05 ноября 2019

Итак, я пытаюсь использовать переменную @picture (которая содержит путь к каталогу изображения) в openrowset, но она не позволяет мне ее использовать. После некоторых исследований я обнаружил, что создание динамического SQL для передачи параметров возможно, но я попробовал это, и это выдает ошибку.

Исходный код: выдает ошибку в переменной @picture and in "single_blob"

declare @picture nvarchar(max) = 'D:\Computer Programing\z Programas\SQL Practicas\images\Iphone11.png'
insert into Image select * from openrowset (bulk @picture, single_blob) as image

Код после создания динамического SQL: ошибка: неявное преобразование из типа данных nvarchar (max) в varbinary (max) не допускается. Используйте функцию CONVERT для выполнения этого запроса.

declare @picture nvarchar(MAX) = 'D:\Computer Programing\z Programas\SQL Practicas\images\Iphone11.png'
declare @sql varbinary(MAX)
SET @sql = 'SELECT * FROM OPENROWSET(BULK ''' + @picture + ''', SINGLE_BLOB) AS image'

update Image set image = (@sql) where id_Image =1

Код после создания динамического SQL и выполнения преобразования с использованием convert:

declare @picture nvarchar(MAX) = 'D:\Computer Programing\z Programas\SQL Practicas\images\Iphone11.png'
declare @sql varbinary(MAX)
SET @sql = 'SELECT * FROM OPENROWSET(BULK ''' + CONVERT(varbinary(max), @picture) + ''', SINGLE_BLOB) AS image'

ошибка: типы данных varchar и varbinary (max) несовместимы в операторе добавления.

И теперь у меня нет идей, я также не нахожу решения для этой конкретной проблемы, или, по крайней мере, я не знаю, как их применять.

Спасибо за потраченное время, надеюсь, у вас будет хороший день. (

...