有一个存储过程:
ALTER PROCEDURE [dbo].[ExcelToDB1]
@filename nvarchar(300)
asdeclare @sqlstr nvarchar(2000)
set @sqlstr='insert into rebuild1(pro_no,city_name,country_name,pro_name,village_name,dis_situation,measures,people_num,direct_loss,pro_num,restore_fund,id,F1,F2,F3)select * from  OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=No;IMEX=1;DATABASE='+@filename+''',[西安市$])'
exec(@sqlstr)select * from rebuild1;结果为:
附件2: NULL NULL
xx表 NULL NULL
序号 pro_no city_name  人口
西安市 NULL 西安市     10
一 西安市 户  县     2 
1 西安市 户  县     2
2       咸阳市   咸阳市       5
在原有的存储过程基础上,如何把前三行去掉,而且不会让信息产生重复录入

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[ExcelToDB1] 
    @filename nvarchar(300) 
    as declare @sqlstr nvarchar(2000) 
    set @sqlstr='insert into rebuild1(pro_no,city_name,country_name,pro_name,village_name,dis_situation,measures,people_num,direct_loss,pro_num,restore_fund,id,F1,F2,F3)select * from  OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=No;IMEX=1;DATABASE='+@filename+''',[西安市$]) t where isnumeric(pro_no)=1' 
    exec(@sqlstr) 
    go
      

  2.   

    set @sqlstr='insert into rebuild1(pro_no,city_name,country_name,pro_name,village_name,dis_situation,measures,people_num,direct_loss,pro_num,restore_fund,id,F1,F2,F3)select * from  OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=No;IMEX=1;DATABASE='+@filename+''',[西安市$]) [color=#FF0000]t where isnumeric(pro_no)=1' 
    exec(@sqlstr) 
    go
    能告诉我这该怎么理解吗??
      

  3.   

    从打开的Excel文件,取数据插入表中
      

  4.   

    print @sqlstr --看就明白了
      

  5.   

    以上语句会报“强行引入pro_no变量”的错误
      

  6.   

    我这样试了,可是还是不行,那怎样修改上面的存储过程能不读execl表中前3行呢??