SQL命令出现问题,声明表,插入并输出

时间:2015-05-08 05:25:40

标签: sql sql-server

我在编写SQL命令时遇到问题,我想在其中声明一个临时表,插入到存储的表中,然后从临时表中输出Id。

我这样做的原因是解决这个错误:如果语句包含没有INTO子句的OUTPUT子句,“DML语句的目标表”不能有任何启用的触发器。这是因为我使用了Sync Framework。

我的插入声明是:

DECLARE InsertList TABLE ([ListId] INT) 
INSERT INTO [List] ([ListName]) VALUES(@ListName) 
OUTPUT [inserted].ListId INTO InsertList 
SELECT * FROM InsertList

但我收到错误:

  

“关键字'TABLE'附近的语法不正确。\ r \ n附近的语法不正确   '输出',“

有人可以帮忙吗?提前致谢

2 个答案:

答案 0 :(得分:3)

SQL Server中的变量以at(@)符号开头,即使对于表变量,输出子句也在insert语句中的错误位置。

DECLARE @InsertList TABLE ([ListId] INT);

INSERT INTO [List] ([ListName]) 
OUTPUT [inserted].ListId INTO @InsertList 
VALUES(@ListName);

SELECT * FROM @InsertList;

答案 1 :(得分:1)

在查询中您尝试使用表类型变量。变量需要用@声明。

正确的代码应该是:

DECLARE @InsertList TABLE ([ListId] INT)