OUTPUT语句出现问题。语法不正确

时间:2013-05-12 17:45:40

标签: sql sql-server tsql

我正在尝试基于一个条件更新数据集,然后检索所有更新的行。 VS一直告诉我在我的OUTPUT子句附近有一个不正确的语法错误,但我没有看到任何错误。我只想弄清楚如何使用“输出”,这可能是我犯的一个非常愚蠢的错误,但没有看到。

使用此OUTPUT子句(语法上)有什么问题?

CREATE PROCEDURE [dbo].[GetInitialSessionNotifications]
@CurrentSessionId bigint
AS
DECLARE @tempTable table(
id bigint NOT NULL,
[Type] nvarchar,
DocumentCommentID bigint,
AnnouncmentID int,
EventID int,
MeetingID int,
[Read] bit,
RecieverId int,
AnnouncmentCommentId bigint,
EventCommentId bigint,
MeetingCommentId bigint,
DateAndTime DateTime);

UPDATE Notifications SET SessionId = @CurrentSessionId
WHERE SessionId != @CurrentSessionId
OUTPUT INSERTED.id,
INSERTED.[Type],
INSERTED.DocumentCommentID,
INSERTED.AnnouncmentID,
INSERTED.EventID,
INSERTED.MeetingID,
INSERTED.[Read],
INSERTED.RecieverId,
INSERTED.AnnouncmentCommentId,
INSERTED.EventCommentId,
INSERTED.MeetingCommentId,
INSERTED.DateAndTime
INTO @tempTable;

SELECT id, [Type], DocumentCommentId, AnnouncmentID, EventID, MeetingID,
[Read], RecieverId, AnnouncmentCommentId, EventCommentId, MeetingCommentId, DateAndTime
FROM @tempTable;

RETURN 0

1 个答案:

答案 0 :(得分:1)

试试这个 -

CREATE PROCEDURE [dbo].[GetInitialSessionNotifications]

@CurrentSessionId BIGINT

AS BEGIN

    DECLARE @tempTable TABLE
    (
        id BIGINT NOT NULL ,
        [Type] NVARCHAR ,
        DocumentCommentID BIGINT ,
        AnnouncmentID INT ,
        EventID INT ,
        MeetingID INT ,
        [Read] BIT ,
        RecieverId INT ,
        AnnouncmentCommentId BIGINT ,
        EventCommentId BIGINT ,
        MeetingCommentId BIGINT ,
        DateAndTime DATETIME
    )

    UPDATE  Notifications
    SET     SessionId = @CurrentSessionId
    OUTPUT  
        INSERTED.id ,
        INSERTED.[Type] ,
        INSERTED.DocumentCommentID ,
        INSERTED.AnnouncmentID ,
        INSERTED.EventID ,
        INSERTED.MeetingID ,
        INSERTED.[Read] ,
        INSERTED.RecieverId ,
        INSERTED.AnnouncmentCommentId ,
        INSERTED.EventCommentId ,
        INSERTED.MeetingCommentId ,
        INSERTED.DateAndTime
    INTO @tempTable
    WHERE   SessionId != @CurrentSessionId

    SELECT  id ,
            [Type] ,
            DocumentCommentId ,
            AnnouncmentID ,
            EventID ,
            MeetingID ,
            [Read] ,
            RecieverId ,
            AnnouncmentCommentId ,
            EventCommentId ,
            MeetingCommentId ,
            DateAndTime
    FROM    @tempTable;

END