Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入blob时是否可以将变量添加到path_Sql_Sql Server - Fatal编程技术网

Sql 插入blob时是否可以将变量添加到path

Sql 插入blob时是否可以将变量添加到path,sql,sql-server,Sql,Sql Server,插入blob时是否可以将变量添加到path 我已尝试过此代码,但不幸的是,它无法按我所希望的方式工作:( A1 @大卫 你好,大卫, 谢谢你们的建议。Blob输出显示了我想要实现的目标,但我需要将@Blob输出插入表中,它完全不同 来自屏幕1的代码 declare @i int = 2 declare @file varchar(2000) = concat('C:\xml\EmployeeWorkTime',@i,'.xml'); declare @blob varbinary(max) de

插入blob时是否可以将变量添加到path 我已尝试过此代码,但不幸的是,它无法按我所希望的方式工作:(

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 屏幕2

A2 在选择@BLOB之后,应该有insert,这解决了我的问题:)再次感谢@David

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

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 

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 

最好列出您得到的错误、当前结果以及预期结果。它不起作用,因为我们不知道您想要什么。Msg 102,级别15,状态1,第5行“K:”附近的语法不正确。我想在路径中添加一个变量@i。列出您得到的错误、当前结果以及预期结果总是好的。它不能正常工作,因为我们不知道您想要什么。Msg 102,15级,状态1,第5行“K:”附近的语法不正确。我想在路径中添加一个变量@i谢谢您的建议。Blob输出显示了我想要实现的目标,但我需要将@Blob输出插入到表中,插入后完全不同。谢谢您的建议。Blob输出显示了我想要实现的目标,但我需要将@Blob输出插入到表中,插入后完全不同。