从excel导出数据时出错

时间:2010-11-25 06:03:56

标签: tsql

我收到以下错误

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工作表路径。

2 个答案:

答案 0 :(得分:0)

我不认为这对你有用。

来自OPENROWSET (Transact-SQL)

  

'数据源'

     

是一个对应的字符串常量   到特定的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