2017-08-08 109 views
0

是否有可能增加一个变量路径,而将BLOB 我试过这个代码,但不幸的是,因为我想:(是否有可能增加一个变量路径,而将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表,它是完全地不同。

屏幕代码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后应该有插入和这个解决我的问题:)再次谢谢@大卫

+0

总是很好的列出你得到的错误,目前的结果是什么,以及预期的结果是什么。 *它不起作用,因为我想*没有帮助,因为我们不知道你想要什么。 – scsimon

+0

Msg 102,Level 15,State 1,Line 5 “K:”附近语法不正确。 – KrzK

+0

我想添加一个变量@i到路径 – KrzK

回答

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 
+0

谢谢您的建议。 Blob输出显示我想要存档的内容,但后来我需要将该输出@blob插入到表中,插入后它完全不同。 – KrzK

相关问题