--表名不能用变量 exec('select duty,count(*) as dutycount from '+@cityname)

解决方案 »

  1.   

    --表名不能用变量 exec('select duty,count(*) as dutycount from '+@cityname)
      

  2.   

    create proc newtable @var_tablename nvarchar(20),@var_tablenumber char(4) 
    as
      exec ('create view '+@var_tablename+'(xzqh,birthday,sex,duty,degree,spec,jgmc)
      as
        select xzqh,s0101,s0102,s0203,s0301,s0302,jgmc 
        from wsn_data1
        where xzqh like '''+ @var_tablenumber+'%'''
           )declare @dutycount1 int,@dutycount2 int,@dutycount3 int,@dutycount4 int,@dutycount5 int,@dutycount6 int,@dutycount7 int
    declare @duty int,@dutycount int,@cityname varchar(20)
    set @cityname=@var_tablename
    set @dutycount1=0
    set @dutycount2=0
    set @dutycount3=0
    set @dutycount4=0
    set @dutycount5=0
    set @dutycount6=0
    set @dutycount7=0
    set @cityname="株洲市"
    declare duty_cursor cursor for
    select duty,count(*) as dutycount from @cityname
    group by duty
    order by dutyopen duty_cursor
    fetch next from duty_cursor
    into @duty,@dutycountif @duty=1  
    set @dutycount1=@dutycount
    else
       if @duty=2 
       set @dutycount2=@dutycount
       else
           if @duty=3  
           set @dutycount3=@dutycount
           else
               if @duty=4 
               set @dutycount4=@dutycount
               else
                   if @duty=5  
                   set @dutycount5=@dutycount
                   else
                       if @duty=9 
                       set @dutycount6=@dutycount
                       else
                           set @dutycount7=@dutycountwhile @@fetch_status=0
    begin
    fetch next from duty_cursor
    into @duty,@dutycountif @duty=1  
    set @dutycount1=@dutycount
    else
       if @duty=2 
       set @dutycount2=@dutycount
       else
           if @duty=3  
           set @dutycount3=@dutycount
           else
               if @duty=4 
               set @dutycount4=@dutycount
               else
                   if @duty=5  
                   set @dutycount5=@dutycount
                   else
                       if @duty=9 
                       set @dutycount6=@dutycount
                       else
                           set @dutycount7=@dutycount
    end
    update total set city_name=@cityname,duty_zg=@dutycount1,duty_fg=@dutycount2,duty_zj=@dutycount3,duty_zl=@dutycount4,duty_y=@dutycount5,duty_dp=@dutycount6,duty_other=@dutycount7close duty_cursor
    deallocate duty_cursorselect * from total这些不对,我该怎么写??:(
      

  3.   

    declare @cityname as varchar(10)
    set @cityname='Yourtable'
    exec('select * from ' +@cityname)