我有一个存储过程中的代码片段:
BEGIN
SET @UserId = NULL;
IF (@Username IS NOT NULL)
BEGIN
EXECUTE SP_ADD_USER @Username, @UserId OUTPUT;
END
EXECUTE SP_ADD_ALERT @Name, @AlertType, @AlertId OUTPUT;
INSERT INTO AlertLogs (Datastamp, AlertID, UserID, NotificationMessage)
VALUES (@Datastamp, @AlertId, @UserId, @EmailMessage);
SET @AlertLogId = SCOPE_IDENTITY();
END
@AlertLogId
是一个输出参数,我希望将其分配给 AlertLogs
表中最后一次插入的结果。我需要包含
INSERT INTO AlertLogs (Datastamp, AlertID, UserID, NotificationMessage)
VALUES (@Datastamp, @AlertId, @UserId, @EmailMessage);
在一个新的块(一个新的开始/结束作用域)中,为了使
SCOPE_IDENTITY()
正常工作,而不是报告例如在SP_ADD_ALERT
中插入记录的最后一个ID?
SCOPE_IDENTITY
,因为你不能进行INSERT
或EXEC
操作。 - CurtisSCOPE_IDENTITY()
的调用。 - Damien_The_UnbelieverINSERT
、UPDATE
或DELETE
调用。而用户定义函数(UDF)不能调用这些命令。 - Curtis