我收到以下错误
ERROR:- Incorrect syntax near '+'.
执行以下T-Sql
DECLARE @DatabasePath VARCHAR(MAX)
SET @DatabasePath = 'E:\ABC.xls'
INSERT INTO [dbo].[Table_1]
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database='+@DatabasePath+'',
'SELECT * FROM [Sheet1$]') AS xlsTable
T-Sql有什么问题。 实际上我想创建一个存储过程,我将在@DatabasePath输入参数中传递Excel工作表路径。
答案 0 :(得分:0)
我不认为这对你有用。
'数据源'
是一个对应的字符串常量 到特定的OLE DB数据源。
你有没有试过像
这样的东西DECLARE @DatabasePath VARCHAR(MAX)
SET @DatabasePath = 'C:\tada.xlsx'
DECLARE @RowSetString VARCHAR(MAX)
SELECT @RowSetString = 'SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;Database=' + @DatabasePath + ''',''SELECT * FROM [Sheet1$]'')'
SELECT @RowSetString
EXEC(@RowSetString)
答案 1 :(得分:0)
您需要使用动态SQL:
DECLARE @DatabasePath VARCHAR(MAX)
SET @DatabasePath = 'E:\ABC.xls'
DECLARE @sql nvarchar(MAX)
SET @sql = '
INSERT INTO [dbo].[Table_1]
SELECT *
FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 8.0;Database=' + @DatabasePath + ',
''SELECT * FROM [Sheet1$]'') AS xlsTable'
EXEC sp_executesql @sql