是否可以在不定义架构的情况下插入表变量?
我需要这样做
Declare @tab1 as table
Insert into @tab1 select * from table2
Select * from @tab1
我正在尝试此查询,但收到错误。
请帮忙。
答案 0 :(得分:3)
错误在于这一行:
将@ tab1声明为表
'table'附近的语法不正确。
但你的插入也犯了错误:
select * into tab1
from table2
据我所知,你需要在使用表变量时声明模式,如果你使用临时表,那么你就不会这样做
select * into #tab1
from table2
请参阅msdn
答案 1 :(得分:1)
错误在第一行
Msg 102,Level 15,State 1,Line 1 'table'附近的语法不正确。
而不是声明@ tab1作为表格尝试
将@ tab1声明为表格(col1 varchar(100))即全表模式
e.g。
将@ tab1声明为表格(col1 VARCHAR(100))
插入@ tab1选择[人名] 来自tblInformation
从@ tab1
中选择*
输出:
<强> COL1 强>
XYZ
ABC
答案 2 :(得分:0)
这将有效:
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)
另外,在Pinal Dave的网站上查找(sp_executesql)以获得一些好的建议