declare @i int
declare @str varchar(100)  
set @i=1
while @i<32
begin
set @str='cdr'+LTRIM(@i)
insert into cdr select * from [@str]    --这边的[@str]是错的,应该怎样引用这个str变量
set @i=@i+1
end我有表cdr1,cdr2,cdr3...cdr31我写个过程想让他连续插入可是我到表时候发现语法错,主要错误是引用表的时候错误了,如上面的insert into cdr select * from [@str] 
这个直接写错[@str]不行

解决方案 »

  1.   

    declare @i int
    declare @str varchar(100)  
    set @i=1
    while @i<32
    begin
    set @str='cdr'+LTRIM(@i)
    EXEC('insert into cdr select * from ['+@str+']')    --这边的[@str]是错的,应该怎样引用这个str变量
    set @i=@i+1
    end
      

  2.   


    declare @i int;set @i=1
    declare @str varchar(100)  
    while @i<32
    begin
    set @str='cdr'+ltrim(@i)
    exec('insert into cdr select * from ['+@str+']')
    set @i=@i+1
    end动态拼接就可以了。