在 openrowset 中使用动态 sql 产生错误
Using dynamic sql in openrowset produces error
我需要创建一个存储过程,将路径作为参数并通过 OPENROWSET 命令从文件插入到 table。
经过大量的搜索和尝试,我了解到 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
Incorrect syntax near 'C:'.
我认为您收到该错误是因为您需要在路径周围加两个额外的“”字符(@string 变量)。试试这个:
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=''''
'+@string+'
'''';Extended Properties="EXCEL 12.0 Xml;HDR=YES'',
''SELECT * FROM [Sheet1$]''
)';
select @sqlString
我需要创建一个存储过程,将路径作为参数并通过 OPENROWSET 命令从文件插入到 table。
经过大量的搜索和尝试,我了解到 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
Incorrect syntax near 'C:'.
我认为您收到该错误是因为您需要在路径周围加两个额外的“”字符(@string 变量)。试试这个:
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=''''
'+@string+'
'''';Extended Properties="EXCEL 12.0 Xml;HDR=YES'',
''SELECT * FROM [Sheet1$]''
)';
select @sqlString