我有一个SQL Server表Products
,我想根据产品代码在图像列中插入每个图像,其中图像名称与产品相同的代码
UPDATE Products
SET ProdImage = (SELECT * FROM Openrowset
( Bulk 'C:\Users\DELL\Desktop\ImageCatalog\sbrk.jpg' , Single_Blob)
as image)
WHERE CODE = 'sbrk'
GO
当我尝试使路径动态化时,图像的名称和代码为sbrk
我得到了异常:
期待STRING,TEXT_LEX
答案 0 :(得分:1)
我相信要使路径动态,您将需要使用动态SQL。您不能只将参数传入BULK语句:
DECLARE @sql NVARCHAR(MAX)
DECLARE @Path NVARCHAR(MAX)
DECLARE @Code NVARCHAR(200)
SET @Path = 'C:\Users\DELL\Desktop\ImageCatalog\sbrk.jpg'
SET @Code = 'sbrk'
SET @sql = '
UPDATE Products
SET ProdImage = (SELECT * FROM Openrowset
( Bulk N''' + @Path + ''' , Single_Blob)
as image)
WHERE CODE = ''' + @Code + ''''
EXEC sp_executesql @sql
<强>更新强>
Turboc说得对(没有代表评论)。我错过了关于图像文件名与代码相同的部分:
DECLARE @sql NVARCHAR(MAX)
DECLARE @Path NVARCHAR(MAX)
DECLARE @Code NVARCHAR(200)
SET @Path = 'C:\Users\DELL\Desktop\ImageCatalog\'
SET @Code = 'sbrk'
SET @sql = '
UPDATE Products
SET ProdImage = (SELECT * FROM Openrowset
( Bulk N''' + @Path + @Code + '.jpg'' , Single_Blob)
as image)
WHERE CODE = ''' + @Code + ''''
EXEC sp_executesql @sql
答案 1 :(得分:1)
我认为darksolace给出的@Path语句可能需要修改才能在最后取出code.jpg。
SET @Path = 'C:\Users\DELL\Desktop\ImageCatalog\'
然后修改update语句以将代码和.jpg附加到批量子查询。我现在没有和我一起使用sql,所以''''s可能会有点偏差。
UPDATE Products
SET ProdImage = (SELECT * FROM Openrowset
( Bulk N''' + @Path + @Code + '.jpg''' , Single_Blob)
as image)
WHERE CODE = ''' + @Code + ''''
但我认为,推荐使用darksolace会让你非常接近。