这条语句的功能是将Excel文件导到sql的表上;
    SELECT * into ItemTable2
        FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
             'Data Source="c:\Inetpub\wwwroot\HRManage\UpLoadFile\测评题库.xls";User     ID=Admin;Password=;Extended properties=Excel 5.0')...c$    但是如果用存储过程做,那么传入参数为文件名和表名,但是这条语句本身就有单引号,在查询分析器组织SQL语句会混淆.请高手给出能根据传入文件名和表名而动态组织的SQL语句;
   
    如果能放在程序里解决更好.但请给出能参考的代码.
    我的环境是ASP.NET,SQLSERVER;语言是C#;不胜感激~~

解决方案 »

  1.   

    这样试试:
    create proc sp_d
    @tname varchar(20),
    @fname varchar(20)
    as 
    declare @s varchar(1000)
    select @s='SELECT * into '+@tname+' FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source=c:\Inetpub\wwwroot\HRManage\UpLoadFile\'+@fname+';UserID=Admin;Password=;Extended properties=Excel 5.0'')...c$'
    exec @s
    goexec sp_d '表名','文件名'
      

  2.   

    在字符串里的'号换成''
    exec动态执行。
      

  3.   

    服务器: 消息 203,级别 16,状态 2,过程 sp_d,行 7
    名称 'SELECT * into 表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=c:\Inetpub\wwwroot\HRManage\UpLoadFile\文件名;UserID=Admin;Password=;Extended properties=Excel 5.0')...c$' 不是有效的标识符。
    不行啊.好象仅仅在字符串里的'号换成''不行.
      

  4.   

    我认为你可以参考以下代码
    exec('select * into ##TempTablea from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@TempDataPath+''',sheet1$)')insert into @TempTable1(HappenDate,Tick_Name,Account,Cur_Name,Percent1,StartPlace,EndPlace,Reason,Address,Hosts,ClientName,Re)
    select 日期,票据种类,金额,币种,百分比,起始地点,到达地点,原因,地点,招待人,客户名,备注 from ##TempTablea
    drop table ##TempTablea
      

  5.   

    exec('SELECT * FROM OpenDataSource("Microsoft.Jet.OLEDB.4.0","Data Source=c:\Inetpub\wwwroot\HRManage\UpLoadFile\测评题库.xls;User ID=Admin;Password=;Extended properties=Excel 5.0")...c$')提示:'Microsoft.Jet.OLEDB.4.0' 附近有语法错误。奇怪,我看别人的代码也是这样写在网上的,就是用双引号代替了单引号,就用exec括起来执行了.要不请大家用ADO的方法来解决吧.