declare @a varchar(255)
set @a='Excel 8.0;Database=e:\test\test1.xls'
insert into tmp_excel_zcfzb(excel_name, zc_line_no, zc_ncs, zc_nms, qy_item_name, qy_line_no, qy_ncs, qy_nms, zc_item_name)
select 'test1.xls',* from openrowset('Microsoft.Jet.OLEDB.4.0',@a, [表页_1$])第 4 行: '@a' 附近有语法错误。
openrowset中的变量@a出现编译错误,如何解决?请各们高手帮忙解决一下,谢谢

解决方案 »

  1.   

    这样试
    declare @a varchar(255)
    declare @s varchar(1000)
    set @a='Excel 8.0;Database=e:\test\test1.xls'
    select @s='insert into tmp_excel_zcfzb(excel_name, zc_line_no, zc_ncs, zc_nms, qy_item_name, qy_line_no, qy_ncs, qy_nms, zc_item_name)
    select ''test1.xls'',* from openrowset(''Microsoft.Jet.OLEDB.4.0'','+@a+', [表页_1$])'
    exec(@s)
      

  2.   

    -- openrowset 不支持使用变量declare @a varchar(255)
    set @a='Excel 8.0;Database=e:\test\test1.xls'
    insert into tmp_excel_zcfzb(excel_name, zc_line_no, zc_ncs, zc_nms, qy_item_name, qy_line_no, qy_ncs, qy_nms, zc_item_name)
    EXEC('select ''test1.xls'',* from openrowset(''Microsoft.Jet.OLEDB.4.0'','''+@a+''', [表页_1$])')
      

  3.   

    declare @a varchar(255)
    declare @s varchar(1000)
    set @a='Excel 8.0;HDR=No;Database=e:\test\test1.xls'
    select @s='insert into tmp_excel_zcfzb(excel_name, zc_line_no, zc_ncs, zc_nms, qy_item_name, qy_line_no, qy_ncs, qy_nms, zc_item_name)
    select ''test1.xls'',* from openrowset(''Microsoft.Jet.OLEDB.4.0'','''+@a+''', [表页_1$])'
    --print @s
    exec(@s)