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
没有索引fpo,但除此之外没有差异(。
我得到:"@T"附近的语法不正确。
此外,为了检查是否没有其他错误,我确认以下操作正常:
SELECT *
INTO #x
FROM [dbo].[_DelimetedFileSpec]
WHERE TemplateId = 1
有可能像这样直接插入内存表吗?
我找到了一种高效的方法!
Declare @DeliSpecs [dbo].[typeTableDelimetedFileSpec]
Insert into @DeliSpecs (TemplateId, FieldName, FieldPosition) Select TemplateId, FieldName, FieldPosition from _DelimetedFileSpec where TemplateId = @Id