Получение ошибки при экспорте данных из Excel - PullRequest
1 голос
/ 25 ноября 2010

Я получаю следующую ошибку

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. На самом деле я хочу создать хранимую процедуру, в которой я передам путь к листу Excel во входном параметре @DatabasePath.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2010

Вам нужно будет использовать динамический 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
0 голосов
/ 25 ноября 2010

Не думаю, что это сработает для вас.

С OPENROWSET (Transact-SQL)

'источник данных'

Isстроковая константа, которая соответствует определенному источнику данных 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...