如何从类型创建临时表?

时间:2014-01-15 01:54:06

标签: sql sql-server sql-server-2008

假设我有一些类型:

CREATE TYPE usr.NameList AS TABLE ([name] VARCHAR(MAX) NOT NULL);

现在我想基于这种类型创建一个临时表,我该怎么办?

CREATE TABLE #superBrand (usr.NameList) -- doesn't work

此外,由此:create table based on a user defined type

CREATE TABLE #superBrand OF usr.NameList -- doesn't work

2 个答案:

答案 0 :(得分:14)

Pure.Krome's answer显示了如何使用表变量而不是#temp表。如果你真的想要一个基于已知表类型的#temp表(不必知道列名/定义),你可以说:

DECLARE @d usr.NameList;
SELECT * INTO #superBrand FROM @d;

现在,#superBrand应该匹配表类型的表结构,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。

当然,然后填充#temp表的其余代码必须知道结构。那么,声明一个与表类型具有相同结构的#temp表的目的究竟是什么呢?

答案 1 :(得分:0)

/****** Object:  UserDefinedTableType [dbo].[IdentityType] ******/
CREATE TYPE [dbo].[IdentityType] AS TABLE(
    [Id] [int] NOT NULL,
    PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
GO




DECLARE @IdTable [dbo].[IdentityType] 
INSERT INTO @IdTable VALUES(1)