【问题标题】:Importing Images in SQL Server: Follow On在 SQL Server 中导入图像:继续
【发布时间】:2013-05-07 23:18:33
【问题描述】:

这是我在 Stack Overflow 上找到的动态 sql 解决方案的后续问题。我想使用前面示例中使用的代码模型。问题是我收到以下错误:Msg 4104, Level 16, State 1, Line 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

【问题讨论】:

    标签: sql-server image dynamic cursor


    【解决方案1】:

    试试

    WHERE Image_File_Name = '' + cast(@Image_File_Name as varchar(50)) + ''

    其中 '' 是两个单引号,而不是双引号。您正在构建一个动态 SQL,因此其中的文字字符串需要另一层撇号

    【讨论】:

    • 如果我这样做,我会得到:Msg 105, Level 15, State 1, Line 18 字符串'.JPG'后的未闭合引号, SINGLE_BLOB) AS img) WHERE Image_File_Name = ' + cast (@Image_File_Name as varchar(50))' exec(@sql) end /* while */ close AssetCursor deallocate AssetCursor '。消息 102,级别 15,状态 1,第 18 行 '.JPG' 附近的语法不正确,SINGLE_BLOB) AS img) WHERE Image_File_Name = ' + cast(@Image_File_Name as varchar(50))' '。
    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多