declare @tab1 table (num int)
declare @tab2 table (num int)
insert into @tab1 values(5)
insert into @tab2 values(5)
insert into @tab2 values(6)
select * from @tab1 inner join @tab2 on @[email protected]
为什么会出现
'必须声明变量 '@tab1'。'
这个错误

解决方案 »

  1.   

    declare @tab1 table (num int)
    declare @tab2 table (num int)
    insert into @tab1 values(5)
    insert into @tab2 values(5)
    insert into @tab2 values(6)
    exec('select * from '+@tab1+' inner join '+@tab2+' on '+@tab1+'.num='+@tab2+'.num'
      

  2.   

    declare @tab1 table (num int)
    declare @tab2 table (num int)
    insert into @tab1 values(5)
    insert into @tab2 values(5)
    insert into @tab2 values(6)
    select * from @tab1 a inner join @tab2 b on a.num=b.num
      

  3.   

    修改一下:
    declare @tab1 table (num1 int)
    declare @tab2 table (num2 int)
    insert into @tab1 values(5)
    insert into @tab2 values(5)
    insert into @tab2 values(6)
    select * from @tab1 inner join @tab2 on num1=num2
      

  4.   

    libin_ftsafe(子陌红尘) 正解    加别名才可引用列
      

  5.   

    必须要使用动态sql语句才行呀.否则是不能用变量代替列名的