假设我有某种类型:
CREATE TYPE usr.NameList AS TABLE ([name] VARCHAR(MAX) NOT NULL);
现在我想基于这种类型创建一个临时表,我该怎么做?
CREATE TABLE #superBrand (usr.NameList) -- doesn't work
同样,从此:基于用户定义的类型创建表:
CREATE TABLE #superBrand OF usr.NameList -- doesn't work
[\Pure.Krome的答案)显示了如何使用表变量而不是#temp表。如果您确实想要基于已知表类型的#temp表(而不必知道列名/定义),则可以说:
DECLARE @d usr.NameList; SELECT * INTO #superBrand FROM @d;
现在,#superBrand应与表类型的表结构匹配,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。
#superBrand
当然,随后填充#temp表的其余代码将必须了解结构。那么,声明与表类型具有相同结构的#temp表的目的到底是什么?