是否可以在插入blob

时间:2017-08-08 20:19:40

标签: sql sql-server

插入blob时是否可以向路径添加变量 我已经尝试过这段代码,但不幸的是它无法正常工作:(

declare @i int
declare @test varbinary(max)
set @i=1
set @test=(select * FROM OPENROWSET 
(BULK ''K:\test\1'+'@'+'.xml'', SINGLE_BLOB)myfile)
insert tab1 values (@test)

A1 @大卫 嗨大卫, 感谢您的意见。 Blob输出显示了我想要实现的内容,但是我需要将该输出@blob插入到表中,它完全不同。

屏幕1的代码

declare @i int = 2
declare @file varchar(2000) = concat('C:\xml\EmployeeWorkTime',@i,'.xml');
declare @blob varbinary(max)
declare @sql nvarchar(max) = concat(N'select @blob = BulkColumn FROM 
OPENROWSET(BULK ''',@file,''', SINGLE_BLOB) myfile')
insert [dbo].[tab1] values (convert(Varbinary(MAX),@sql))

屏幕1 enter image description here 屏幕2 enter image description here

A2 选择@BLOB之后应该插入并解决我的问题:)再次感谢@David

(...)
select @blob
insert tab1 values(@blob) 

1 个答案:

答案 0 :(得分:2)

OPENROWSET不支持文件名的表达式或变量。您可以使用动态SQL。像这样:

declare @i int = 1

declare @file varchar(2000) = concat('K:\test\file',@i,'.xml');

--set @file = 'c:\temp\a.xml'

declare @blob varbinary(max)

declare @sql nvarchar(max) = concat(N'select @blob = BulkColumn FROM OPENROWSET(BULK ''',@file,''', SINGLE_BLOB) myfile')

exec sp_executesql @sql, N'@blob varbinary(max) output', @blob = @blob output

select @blob