我写一个读取一个Excel,然后取得数据,经过处理后插入到 SQLServer里面,但是却报错,先看一下我的代码:CREATE PROCEDURE badboy_YSKMZH 
    @lj varchar(500)
ASdeclare @str varchar(1000)
set @str='select cast(预算执行新旧科目转换表 as decimal(38)) as a,cast(F5 as decimal(38,2)) as b  into badboy_temp '
set @str=@str+'from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;imex=1;DATABASE='+@lj+''',sheet1$) '
set @str=@str+'where ISNUMERIC(F5)=1 and ISNUMERIC(预算执行新旧科目转换表)=1'
exec @str
GO意思是,读取一个Excel文件,然后取得字段[预算执行新旧科目转换表]、字段[F5]是数值型的,将这些插入到 badboy_temp 里面,但是我调用的时候却报错,错误说明:名称 'select cast(预算执行新旧科目转换表 as decimal(38)) as a,cast(F5 as decimal(38,2)) as b into badboy_temp from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;imex=1;DATABASE=E:\我的项目\预算执行新旧科目转换表\a.xls',sheet1$) where ISNUMERIC(F5)=1 and ISNUMERIC(预算执行新旧科目转换表)=1' 不是有效的标识符。但是:将@str中的串粘贴出来,在查询分析器里面执行却是正确的!搞不懂了,希望各位指点一下!

解决方案 »

  1.   

    CREATE PROCEDURE badboy_YSKMZH 
        @lj varchar(500)
    ASdeclare @str varchar(1000)
    set @str='select cast(预算执行新旧科目转换表 as decimal(38)) as a,cast(F5 as decimal(38,2)) as b  into badboy_temp '
    set @str=@str+'from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;imex=1;DATABASE='+@lj+''',sheet1$) '
    set @str=@str+' where ISNUMERIC(F5)=1 and ISNUMERIC(预算执行新旧科目转换表)=1'
    exec(@str)
    GO--这样呢?
      

  2.   

    set @str=@str+'from OPENROWSET(''....類似 from 前面的空格注意了嗎?
    還有where等等關鍵字前面的
      

  3.   

    exec @str
     加個括號看看
    exec (@str)