我做了一些研究,发现获取新插入行的id的最佳解决方案是输出子句。我是第一次使用insert语句输出子句而无法弄明白。
这是我的sql代码。这个sql出了什么问题?
ALTER PROCEDURE [dbo].[MedBul_Insert_Message]
(@ParentID int, @MessageFrom varchar(500),@MessageTo varchar(500), @MessageSubject varchar(500),@MessageBody varchar(4000),@MessageIsRead int)
AS
BEGIN
SET LANGUAGE Turkish;
Declare @message_id table (MessageID int);
insert into Messages output INSERTED.ID INTO @message_id (ParentID ,MessageFrom ,MessageSubject ,MessageBody ,MessageIsRead ) values(@ParentID ,@MessageFrom ,@MessageSubject ,@MessageBody ,@MessageIsRead );
END
答案 0 :(得分:5)
OUTPUT
子句应该在列列表后
insert into Messages (ParentID ,MessageFrom ,MessageSubject ,MessageBody ,MessageIsRead )
output INSERTED.ID INTO @message_id (MessageID)
values(@ParentID ,@MessageFrom ,@MessageSubject ,@MessageBody ,@MessageIsRead );
请参阅INSERT
文档。
(而且,显然,你现在需要用@message_id
的内容实际做,但我认为你还没有写过或者没有在你的问题中显示,存储过程的其余部分)