openrowset(
这里不能用变量的。

解决方案 »

  1.   

    实在需要,你只有将整个语句使用动态sql执行。
      

  2.   

    啊哦~~那么帮帮我看看动态的sql怎么写才合适实在被变量后的变化给搞郁闷了!
      

  3.   

    create proc insert_BL_Procject@pf varchar(1000)as
    declare @Program_ID intdeclare @sql varchar(8000)
    select @sql = '''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@pf+''',''select  项目编码 as BL_ProjectNum,项目名称 as BL_ProjectName,项目特征 as BL_ProjectTrait,
    计量单位 as BL_UnitID,工程数量 as BL_quantity,单价 as BL_UnitPrice,合价 as BL_TotalPrice from [sheet1$]'''
    select @sql
    set @Program_ID=(select top 1 Program_ID from BL_BudgetListing order by Program_ID desc)+1exec('insert into BL_BudgetListing 
    select 
    BL_ProjectNum,
    BL_ProjectName,
    BL_ProjectTrait,
    BL_UnitID,
    BL_quantity,
    BL_UnitPrice,
    BL_TotalPrice,'
    +@Program_ID+'
    from 
    openrowset('+@sql')'
    --这么写试试吧
      

  4.   

    服务器: 消息 170,级别 15,状态 1,过程 insert_BL_Procject,行 27
    第 27 行: ')' 附近有语法错误。
      

  5.   

    openrowset('+@sql+')' 少了一个 '+'号
      

  6.   

    try create proc insert_BL_Procject@pf varchar(1000)as
    declare @Program_ID intdeclare @Tsql varchar(8000)declare @sql varchar(8000)
    select @sql = '''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@pf+''',''select  项目编码 as BL_ProjectNum,项目名称 as BL_ProjectName,项目特征 as BL_ProjectTrait,
    计量单位 as BL_UnitID,工程数量 as BL_quantity,单价 as BL_UnitPrice,合价 as BL_TotalPrice from [sheet1$]'''
    select @sql
    set @Program_ID=(select top 1 Program_ID from BL_BudgetListing order by Program_ID desc)+1exec('insert into BL_BudgetListing 
    select 
    BL_ProjectNum,
    BL_ProjectName,
    BL_ProjectTrait,
    BL_UnitID,
    BL_quantity,
    BL_UnitPrice,
    BL_TotalPrice,'
    + @Program_ID +'
    from 
    openrowset('+@sql +')')