关键字' SELECT'附近的语法不正确。 ')'附近的语法不正确尝试使用内部选择时

时间:2017-03-01 16:56:19

标签: sql sql-server

我之前因为其他原因看到了错误,但我该如何解决?

INSERT INTO [dbo].[XXX] ([ID], [aaa], [bbb], [ccc])
VALUES (SELECT NEXT VALUE FOR dbo.S_SHIPPING_ID_SEQ, @aaa, @bbb, @ccc)

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

只需使用insert . . . select即可。不需要values

INSERT INTO [dbo].[XXX] ([ID], [aaa], [bbb], [ccc])
    SELECT NEXT VALUE FOR dbo.S_SHIPPING_ID_SEQ, @aaa, @bbb, @ccc;

或者,如果您真的喜欢VALUES,请使用子查询:

INSERT INTO [dbo].[XXX] ([ID], [aaa], [bbb], [ccc])
    VALUES (SELECT NEXT VALUE FOR dbo.S_SHIPPING_ID_SEQ), @aaa, @bbb, @ccc);

实际上,这也应该有效:

INSERT INTO [dbo].[XXX] ([ID], [aaa], [bbb], [ccc])
    VALUES (NEXT VALUE FOR dbo.S_SHIPPING_ID_SEQ, @aaa, @bbb, @ccc);

但为什么不将ID声明为身份并使用:

INSERT INTO [dbo].[XXX] ([aaa], [bbb], [ccc])
    VALUES (@aaa, @bbb, @ccc);