使用OPENROWSET时SQL Server语法错误?

时间:2010-08-02 16:21:22

标签: sql sql-server tsql syntax

我正在尝试将此作为SQL Server 2000上存储过程的一部分来编写。我一直在线上启动语法错误,开始插入OPENROWSET(.....

帮助!我看不到语法错误!

DECLARE @vDate Varchar(25) 
DECLARE @vCommand nvarchar(1000) 
DECLARE @fileName varchar(500)  

SET @vDate = LEFT(DATENAME(month, DATEADD(m, -1, GETDATE())), 3) + DATENAME(year, DATEADD(m, -1, GETDATE()))

SET @fileName = '\\SERVER\folder\subfolder\subfolder\Excel\JobRerun\JobRerun_' + @vDate + '.xls'

SET @vCommand =  'copy \\SERVER\folder\subfolder\subfolder\Excel\JobRerun\JobRerunTemplate.xls ' + @fileName

Exec master..xp_cmdshell @vCommand , NO_OUTPUT

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0;Database=' + @fileName + ';', 
   'SELECT * FROM [RerunData$]')  

2 个答案:

答案 0 :(得分:1)

您的INSERT语句对我不正确 - 您有INSERT INTO OPENROWSET(...。这意味着你试图插入OPENROWSET查询,但你在其中提供“SELECT * ...”。它应该类似于:

INSERT INTO your_table
SELECT * FROM OPENROWSET(...

答案 1 :(得分:1)

你不能像在那行那样进行字符串的内联连接:'Excel 5.0; Database ='+ @fileName +';'

尝试将其移至单独的声明

您可以尝试以下方式:

exec ('INSERT INTO OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', ''' + @providerstring + ''', ''SELECT * FROM [RerunData$]''')