代码之家  ›  专栏  ›  技术社区  ›  Himadri

是否可以在不定义模式的情况下插入到表变量中?

  •  1
  • Himadri  · 技术社区  · 15 年前

    是否可以在不定义模式的情况下插入到表变量中?

    我要这样做

    Declare @tab1 as table
    
    Insert into @tab1 select * from table2
    
    Select * from @tab1
    

    我试过这个问题,但出错了。

    请帮忙。

    3 回复  |  直到 8 年前
        1
  •  1
  •   priyanka.sarkar    15 年前

    错误在第一行

    消息102,级别15,状态1,行1 “table”附近有语法错误。

    而不是 将@tab1声明为表 尝试

    将@tab1声明为表(col1 varchar(100)),即全表模式

    例如

    将@tab1声明为表(col1 瓦尔查尔(100)

    插入@tab1 select[人名] 来自Tblin地层

    从@tab1选择*

    输出:

    第1列

    XYZ
    abc

        2
  •  3
  •   Johnno Nolan    15 年前

    此行出错:

    将@tab1声明为表

    “table”附近有语法错误。

    但你也犯了一个错误,你的插入应该是:

    select * into tab1
    from table2
    

    据我所知,在使用表变量时需要声明模式,如果使用临时表,则不需要这样做。

    select * into #tab1
    from table2
    

    msdn

        3
  •  0
  •   priyanka.sarkar    8 年前

    这将起作用:

    declare @tab table (BillID int)
    insert into @tab
    select top 10 BillID from tblBill
    select * from @tab
    

    这不起作用:

    select top 10 BillID into @tab from tblBill
    select * from @tab
    

    如果要动态定义表var的模式,可以使用如下内容:

    declare @str varchar(1000)
    set @str = 'declare @tab table (BillID int) ' + 
    'insert into @tab ' + 'select top 10 BillID from tblBill ' + 'select * from @tab '
    exec(@str)
    

    此外,查找( sp_executesql )在Pinal Dave的网站上寻求一些好的建议