sql2005 声明表变量
 declare @t_tablebarcode table(id int) ,barcode varchar(50) 
,PackLayer int,SubTypeID int,PkgRatioID int
,ResCodeID int,ImportID int 
,DeActiveID int ,ActiveID int)
动态sql
set @t_SQL='insert into '+@tarGet+'(Barcode,rescodeid,importid,printid,activeid)
select barcode,rescodeid,importid,null,@p_cActiveID from 
tbarcodeimport where BARCODE in(select barcode from '+@t_tablebarcode+')'
exec @t_SQL
编译出错
消息 137,级别 15,状态 2,过程 ExportSubBarcode,第 26 行
必须声明标量变量 "@t_tablebarcode"。

解决方案 »

  1.   

    set @t_SQL ='insert into '+@t_tablebarcode+' select top '+ @p_iCurCodeNum 
    +'from tbarcodeimport where rescodeid='+@p_iLevelID+'order by id'
      

  2.   

    刚刚写错了,2楼的是那个动态的sql
      

  3.   

    得用临时表create table #t_tablebarcode (id int) 
    set @t_SQL='insert into '+@tarGet+'(Barcode,rescodeid,importid,printid,activeid)
    select barcode,rescodeid,importid,null,@p_cActiveID from  
    tbarcodeimport where BARCODE in(select barcode from #t_tablebarcode)'
      

  4.   

    set @t_SQL='declare @t_tablebarcode table(id int
    ,barcode varchar(50)  
    ,PackLayer int,SubTypeID int,PkgRatioID int
    ,ResCodeID int,ImportID int  
    ,DeActiveID int ,ActiveID int); insert into '+@tarGet+'(Barcode,rescodeid,importid,printid,activeid)
    select barcode,rescodeid,importid,null,@p_cActiveID from  
    tbarcodeimport where BARCODE in(select barcode from @t_tablebarcode)'
    exec(@t_SQL)那你就这样
      

  5.   

    用普通临时表也可以:create table #t_tablebarcode(id int
    ,barcode varchar(50)  
    ,PackLayer int,SubTypeID int,PkgRatioID int
    ,ResCodeID int,ImportID int  
    ,DeActiveID int ,ActiveID int);set @t_SQL=' insert into '+@tarGet+'(Barcode,rescodeid,importid,printid,activeid)
    select barcode,rescodeid,importid,null,@p_cActiveID from  
    tbarcodeimport where BARCODE in(select barcode from #t_tablebarcode)'
    exec( @t_SQL)