我在编写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附近的语法不正确 '输出',“
有人可以帮忙吗?提前致谢
答案 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)