2013-05-12 24 views
0

我想基于一个条件更新数据集,然后检索所有更新的行。 VS一直告诉我在我的OUTPUT子句附近有一个不正确的语法错误,但我没有看到任何错误。我只是想弄清楚如何使用“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; 

返回0

+3

'WHERE'进入*后*'OUTPUT'。 – 2013-05-12 17:48:18

+0

那么在INTO声明之后呢?我希望你能回答一个答案。我现在不能标记你是正确的。 – Adrian 2013-05-12 17:50:48

+1

@Adrian没错,'更新通知SET会话ID = @CurrentSessionId OUTPUT INSERTED.id, INSERTED [类型], ... INSERTED.DateAndTime INTO @tempTable WHERE的SessionID = @CurrentSessionId。!' – 2013-05-12 17:52:11

回答

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