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 @str varchar(1000)
    select @str ='insert into'+ @TableName+' select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
            'Data Source="E:\Test\TableOne.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]'exec (@str);
      

  2.   


    select @str =
    'insert into'+ @TableName+' select * from  OpenDataSource( '''Microsoft.Jet.OLEDB.4.0''',
            '''Data Source="E:\Test\TableOne.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]'
      

  3.   

    谢谢,我sql不是很好。
    再请问下:
       我有2张表,A 和 B。B中的数据包含A,但是字段数不一样。按照姓名字来查询出重复的数据,然后再将这些重复的数据插入我已有的表C中,请教如何写。谢谢!