0

SQL Server 允许您创建内存表。但是你如何插入操作呢?

例如,我使用这段代码来创建我的类型:

CREATE TYPE dbo.typeTableDelimetedFileSpec  
       AS TABLE  
          (  
               TemplateId INT NOT NULL,  
               FieldName VARCHAR(50) NOT NUL,
               FieldPosition SMALLINT NOT NULL INDEX fpos
          )  
          WITH (MEMORY_OPTIMIZED = ON);  

然后,我尝试这样做:

DECLARE @T [dbo].[typeTableDelimetedFileSpec]

SELECT * 
INTO @T 
FROM [dbo].[_DelimetedFileSpec] 
WHERE TemplateId = 1

我知道结构匹配(_DelimetedFileSpec没有索引 fpos,但除此之外没有区别)。

我得到:'@T' 附近的语法不正确。

另外,为了检查没有其他错误,我确认以下工作正常:

SELECT * 
INTO #x 
FROM [dbo].[_DelimetedFileSpec] 
WHERE TemplateId = 1

是否可以像这样以某种方式直接插入内存表?

4

1 回答 1

0

我找到了一种有效的方法!

Declare @DeliSpecs [dbo].[typeTableDelimetedFileSpec]
Insert into @DeliSpecs (TemplateId, FieldName, FieldPosition) Select TemplateId, FieldName, FieldPosition from _DelimetedFileSpec where TemplateId = @Id
于 2020-09-28T19:32:49.353 回答