使用Microsoft.ACE.OLEDB.12.0和声明的变量插入表



我试图从Excel文件导入数据到表。没有使用变量,一切都工作得很好,然而,当我试图在第一时间声明var时,执行以错误告终。

脚本:

Declare @DateUsed NVARCHAR(30), @StringDatabase NVARCHAR(30);
SET @DateUsed = '2022-06-20.xlsx';
SET @StringDatabase = 'Database=C:PATH -'
INSERT INTO Viator.dbo.Test SELECT *  
from  OPENROWSET(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;'
@StringDatabase + @DateUsed,
'SELECT * FROM [Table1$]'
);

如果我替换@StringDatabase@DateUsed,查询将成功完成。

错误信息:

Msg 102, Level 15, State 1, Line 10
'@StringDatabase'附近语法错误。

每个@Larnu评论

方法应该是基于这里已经提供的解决方案之一来定义动态SQL
SET @DateUsed = '2022-06-20.xlsx';
SET @sql = 'INSERT INTO dbo.Test SELECT *  
from  OPENROWSET(
''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0;
Database=C:PATH - ' + @DateUsed + ''',
''SELECT * FROM [Table1$]''
);'

exec(@sql);

最新更新