select * from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet$)能不能用变量把c:\test.xls给替换掉。
就是可由参数传递不同的文件路径进去?新手不会。谢谢各位*.^~

解决方案 »

  1.   

    create proc SelcetFromExcel
    @path varchar(255)
    asexec
    (
    'select * from 
    openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@path+''',sheet$)' 
    )goexec SelcetFromExcel 'c:\test.xls'
      

  2.   

    用动态SQL 语句拼接起来运行
      

  3.   

    select * from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet$) 能不能用变量把c:\test.xls给替换掉。 
    就是可由参数传递不同的文件路径进去? 新手不会。谢谢各位*.^~ 
    --
    要替换成变量就必须是写成动态语句select * from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet$) 
    --
    declare @sql varchar(8000)
    declare @xls varchar(255)
    set  @xls='c:\test.xls'
    set @sql ='select * from openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE='+@xls+'',sheet$)'