我想知道为什么以下不起作用:
INSERT INTO @Data2 (FileName,Field)
SELECT @FileName as FileName, * FROM OPENROWSET(BULK '\\serverpath\' + @FileName , SINGLE_CLOB) AS Contents
我还尝试了第二种方法,但使用这种方法时,我收到了错误消息:该变量未声明:
declare @path nvarchar(255) = 'SELECT @FileName as FileName, * FROM OPENROWSET(BULK ''\\serverpath\' + @FileName + ''', SINGLE_CLOB) AS Contents'
INSERT INTO @Data2 (FileName,Field)
EXEC(@path)
有人可以帮忙吗? 谢谢
最佳答案
您无法使用exec
将@FileName作为FileName传递
,但您可以使用sp_executesql
- 但您仍然无法传递@FileName
作为 openrowset()
的一部分:
declare @path nvarchar(4000) = N'
select @FileName as FileName, *
from openrowset(bulk ''\\serverpath\' + @FileName + '''
, single_clob) as Contents'
insert into @Data2 (FileName,Field)
exec sp_executesql, N'@FileName nvarchar(1024))',@FileName
或者像bulk
源一样直接连接它:
declare @path nvarchar(4000) = N'
select '+quotename(@FileName,'''')+' as FileName, *
from openrowset(bulk '+quotename('\\serverpath\'+@FileName,'''')+'
, single_clob) as Contents'
insert into @Data2 (FileName,Field)
exec sp_executesql @path
引用:
关于sql - SQL 中的字符串连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457488/