我的檔案表中有一組資料行,該表中的每一行都有一個唯一的列 AbsoluteUri(托管在 Azure 容器中)。我想要做的是在 OPENROWSET 的 BULK 中添加一個動態 url,以實作我的目標,即存盤回應 (VARBINARY(MAX))。當我嘗試將靜態單個 qoute 放入 BULK 時,它可以作業,但是當我嘗試通過添加來自 TDM.AbsoluteUri 的資料使其動態時,它會引發一些錯誤,這是無效的語法。下面是我試過的。
SELECT TR.Id AS TransactionID, TDM.Id AS DocumentID,
(SELECT *
FROM OPENROWSET
(
BULK TDM.AbsoluteUri,
DATA_SOURCE = 'DocumentsUri',
SINGLE_BLOB
) AS blob),
FROM [dbo].[Transaction] AS TR
LEFT JOIN [dbo].[Documents] AS TDM ON TR.Id = TDM.TransactionId
預期結果應該是從 DocumentsUri 轉換成 VARBINARY(MAX) 資料。
uj5u.com熱心網友回復:
檔案名必須是字串文字,即動態 SQL 和游標。例如
declare @images table(name varchar(200), filename varchar(200))
insert into @images (name, filename) values ('Hammer','public/Hammer.jpg')
insert into @images (name, filename) values ('Screwdriver','public/screwdriver.jpg')
declare @localImages table(name varchar(200), image varbinary(max))
declare @name varchar(200), @filename varchar(200)
declare c cursor local for
select * from @images
open c
fetch next from c into @name, @filename
while @@FETCH_STATUS = 0
begin
declare @sql nvarchar(max) = concat(N'
SELECT ''',@name,''' name, BulkColumn Image
FROM OPENROWSET
(
BULK ''',@filename, ''',
DATA_SOURCE = ''BlobStore'',
SINGLE_BLOB
) AS blob;
');
print @sql
insert into @localImages(name,image)
exec (@sql)
fetch next from c into @name, @filename
end
select *
from @localImages
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338954.html
