输出从CTE插入的行

时间:2018-03-25 04:24:59

标签: sql-server sql-server-2005 sql-server-2012 sql-server-2008-r2 common-table-expression

我有一个CTE,我需要用已插入的行填充该CTE。

我尝试使用临时表。

我不知道如何在CTE中创建临时表并填写CTE。

这就是我的尝试:

WITH RESULT AS
(

DECLARE @INSERTOUTPUT1 TABLE
(
  BOOKID INT,
  BOOKTITLE NVARCHAR(50),
  MODIFIEDDATE DATETIME
 );

-- INSERT NEW ROW INTO BOOKS TABLE
INSERT INTO BOOKS
OUTPUT INSERTED.*  INTO @INSERTOUTPUT1
VALUES(101, 'ONE HUNDRED YEARS OF SOLITUDE', GETDATE());
SELECT * FROM @INSERTOUTPUT1
)
SELECT * FROM RESULT

以下是该表的架构:

DROP TABLE dbo.Books;

CREATE TABLE dbo.Books
(
  BookID int NOT NULL PRIMARY KEY,
  BookTitle nvarchar(50) NOT NULL,
  ModifiedDate datetime NOT NULL
);

1 个答案:

答案 0 :(得分:1)

您无法在declare内找到CTE声明。它应该是单独的声明。不确定你想要的CTE在哪里?但是不需要CTE

DECLARE @INSERTOUTPUT1 TABLE
(
  BOOKID INT,
  BOOKTITLE NVARCHAR(50),
  MODIFIEDDATE DATETIME
 );

INSERT INTO Books
OUTPUT INSERTED.*  INTO @INSERTOUTPUT1
VALUES(101, 'ONE HUNDRED YEARS OF SOLITUDE', GETDATE());

select  *
from    @INSERTOUTPUT1