不可以的,可以用 select * into #t from tb生成临时表

解决方案 »

  1.   

    declare @name varchar(10),@s varchar(100)
    set @name='jobs'
    set @s='select top 1 * from ' +@name
    exec(@s)/*
    job_id job_desc                                           min_lvl max_lvl 
    ------ -------------------------------------------------- ------- ------- 
    1      New Hire - Job not specified                       200     10
    */
      

  2.   


    不支持定义表变量直接赋值,用插入
    create table #
    (a int,        b int)
    insert into #
    select 1,         2 union all
    select 2,         3 union all
    select 3,         3 union all
    select 4,         2 declare @t table(a int,  b int)
    insert into @t
    select  * from #
      

  3.   

    可以,但是需要将执行动态sql,也就是将表名和sql语句组合成字符串,然后用exec(@stmt)来执行。
      

  4.   

    表名是可以传递的,关键是必须用动态sql语句.
      

  5.   

    写了个示例:--打开数据库
    use pubs--创建军存贮过程
    create proc prg1
    @tablename varchar(20)
    as 
    declare @str varchar(1000)
    set @str='select * from ' + @tablename
    exec(@str)--调用
    exec prg1 'sales'
      

  6.   

    好像只能用EXEC构造SQL去执行,
    不知道还有没有其他好方法?
      

  7.   

    set @a = select * from danu
    exec @a 不能产生返回啊???,那不是不能用啊??/