0

私はいくつかの調査を行い、新しく挿入された行の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
4

1 に答える 1

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必要がありますが、ストアドプロシージャの残りの部分をまだ書いていないか、質問に示していないだけだと思います)

于 2013-04-19T07:27:11.083 に答える