2017-08-08 111 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

相關問題