在openrowset中使用动态sql会产生错误

时间:2015-10-08 15:51:42

标签: sql-server openrowset

我需要创建一个存储过程,该路径将路径作为参数,并通过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:'附近的语法不正确。

谢谢!

0 个答案:

没有答案