这是我在Stack Overflow上找到的动态sql解决方案的后续问题。我想使用前面示例中使用的代码模型。问题是我收到以下错误:消息4104,级别16,状态1,行1 多部分标识符" ABC123.jpg"无法绑定,我不明白为什么因为图像名称确实被加载。我没办法。我觉得我非常接近使这个解决方案有效但不能超越这个问题。
请在下面找到示例代码:
declare AssetCursor cursor fast_forward for
select Image_File_Name
from Images
declare @sql nvarchar(4000)
declare @Image_File_Name varchar(50)
open AssetCursor
while (1=1) begin
fetch next from AssetCursor into @Image_File_Name
if @@FETCH_STATUS<>0 break
set @sql = N'UPDATE dbo.Images
SET Doc_Image =
(SELECT * FROM
OPENROWSET(BULK N''C:\MyImages\' + cast(@Image_File_Name as varchar(50)) + N'.JPG'', SINGLE_BLOB) AS img)
WHERE Image_File_Name = ' + cast(@Image_File_Name as varchar(50))
exec(@sql)
end /* while */
close AssetCursor
deallocate AssetCursor
答案 0 :(得分:0)
尝试
WHERE Image_File_Name =''+ cast(@Image_File_Name as varchar(50))+''
其中''是两个单引号,而不是双引号。您正在构建动态SQL,因此其中的文字字符串需要另一层叛逆者