如何在“ openrowset”中使用变量?

时间:2019-11-05 14:24:25

标签: sql-server tsql openrowset

因此,我尝试在openrowset中使用变量@picture(包含图片的目录路径),但不允许我使用它。 经过一番研究,我发现可以通过创建动态SQL来传递参数,但是我尝试过这样做,但它给了我一个错误。

原始代码:它给我一个变量@picture和“ 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)在添加运算符中不兼容。

现在我没有主意了,我也没有找到针对这个特定问题的解决方案,或者至少,我不知道如何应用它们。

感谢您的时间,希望您过得愉快。 (:

0 个答案:

没有答案