我试图从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评论
方法应该是基于这里已经提供的解决方案之一来定义动态SQLSET @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);