【发布时间】:2016-01-06 08:29:13
【问题描述】:
我需要创建一个存储过程,它获取路径作为参数并通过 OPENROWSET 命令从文件插入到表中。
经过大量搜索和尝试,我了解到OPENROWSET 没有
支持参数,因此需要用动态SQL调用。
那是不起作用的部分,它显示了一个奇怪的错误。
可能是OPENROWSET不接受字符串参数造成的
但是 - 我看到许多类似构建的代码 sn-ps 并且用户说它们可以工作。
请帮助我了解我在这里缺少什么以及如何完成这项工作?
这是我的代码:
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 变量以及其他选项
这是错误:
消息 102,第 15 级,状态 1,第 5 行
'C:' 附近的语法不正确。
【问题讨论】:
标签: sql-server openrowset