2013-05-12 27 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