create proc AddTableOneDataSource
    @TableName nvarchar(200),--数据库中表的名字
    @Path nvarchar(500)--文件的路径
as
    insert into TableOne --表名:字段要和excel的一致插入一个表
    select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
        'Data Source="E:\Test\TableOne.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]我想用存储过程来实现导入excel的功能,但是间“TableOne ”替换成“TableName ”会出现“请申明TableName”,
下面的data source="E:\Test\TableOne.xls";我想用“@Path (如:data source="'+@Path +'";) ”来替换,但报错说+号附近有语法错误。请教各位如何替换!

解决方案 »

  1.   

    declare   @sql   varchar(1000) 
    set   @sql= '   insert   into   '+@tablename+ 
    '   SELECT   *   '+ 
    '   FROM   OpenDataSource( ' 'Microsoft.Jet.OLEDB.4.0 ' ', ' 'Data   Source= '+@filename+';User   ID=Admin;Password=;Extended   properties=Excel   5.0;HDR=yes;imex=1 ' ')...[ '+@exceltablename+ '] ' 
    exec(@sql) 
      

  2.   

    会出现“请申明TableName”  它都给你提示了,其实主要是因为你没有加@  这个是sql语法问题啊,希望在方面加强
      

  3.   

    完整代码create proc AddTableOneDataSource
        @TableName nvarchar(200),--数据库中表的名字
        @Path nvarchar(500)--文件的路径
    as
    declare @sql varchar(1000)  
    set @sql= ' insert into '+@tablename+  
    ' SELECT * '+  
    ' FROM OpenDataSource( ' 'Microsoft.Jet.OLEDB.4.0 ' ', ' 'Data Source= '+@filename+';User ID=Admin;Password=;Extended properties=Excel 5.0;HDR=yes;imex=1 ' ')...[ '+@exceltablename+ '] '  
    exec(@sql) --这里就是执行插入操作。
    go