这样的语句,可以正常的执行
-----------------------------------------------------------------------------------------------
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
-----------------------------------------------------------------------------------------------我想把excel文件的路径和名称还有sheet名称,用变量来代替。目的是为了能在存储过程中使用。可是我只是简单的设定如下declare @sql nvarchar(100)
set @sql='c:\book1.xls'
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="'+@sql+'";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]-----------------------
提示错误:“+号附近有语法错误”
-----------------------这个问题如果解决!!???  望相助!!

解决方案 »

  1.   

    用動態sql語句,將整個語句放到@sql中
    最后exec(@sql)
      

  2.   

    declare   @filename   nvarchar(1000) ,@s varchar(1000)
    set   @filename='c:\book1.xls' 
    set @s='SELECT   *   FROM   OpenDataSource(   ''Microsoft.Jet.OLEDB.4.0'', ''Data   Source="'+@filename+'";User   ID=Admin;Password=;Extended   properties=Excel   5.0'')...[Sheet1$]'exec(@s)
      

  3.   

    要用动态SQL
    declare   @filename   nvarchar(1000) ,@sql varchar(8000)
    set   @filename='c:\book1.xls' 
    set @sql='SELECT * FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'', ''Data   Source="'+@filename+'";User ID=Admin;Password=;Extended properties=Excel 5.0'')...[Sheet1$]'exec(@sql)