2010-11-25 83 views
1

出口數據我收到以下錯誤得到錯誤,同時從Excel

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='[email protected]+'', 
     'SELECT * FROM [Sheet1$]') AS xlsTable 

有什麼問題在T-SQL。 其實我想創建一個存儲過程,我將在@DatabasePath輸入參數中傳遞Excel表單路徑。

回答

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) 
+0

是一個不過的解決方案!謝謝,但我希望有什麼相反的:-)(一個動態路徑Excel文件作爲存儲過程的輸入參數) – Sukhjeevan 2010-11-25 06:23:18

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