我需要创建一个存储过程,该路径将路径作为参数,并通过OPENROWSET命令从文件插入到表中。
经过大量的搜索和尝试后,我了解到OPENROWSET
没有
支持参数,因此需要用动态SQL“欺骗”。
这是不起作用的部分,它给我一个奇怪的错误。
这可能是由OPENROWSET
不接受字符串参数引起的
但是 - 我看到许多代码片段的构建类似,用户说它们有效。
请帮助我理解我在这里缺少什么以及如何使这项工作?
谢谢!
这是我的代码:
Declare @string varchar(MAX) = 'C:\Users\akoga_000\Desktop\test1.xlsx'
DECLARE @sqlString AS varchar(MAX)=
'insert into gameIt_DBSummer.dbo.tblUser
select * from openrowset(
''Microsoft.ACE.OLEDB.12.0'',
''EXCEL 12.0;DataBase=''
'+cast(@string as varchar(max))+'
'';Extended Properties="EXCEL 12.0 Xml;HDR=YES'',
''SELECT * FROM [Sheet1$]''
)';
EXEC (@sqlString)
//我还尝试使用EXEC sp_executesql和其他选项中的nvarchar变量
这是错误:
Msg 102,Level 15,State 1,Line 5
'C:'附近的语法不正确。
谢谢!