如何在存储过程中选择插入的值?

MrG*_*O-L 2 sql t-sql sql-server stored-procedures

我正在使用一个存储过程,该存储过程在表中插入值:ID 和当前日期。我知道如何获取上次使用的 ID,SCOPE_IDENTITY但我还需要SELECT刚刚插入的日期。有任何想法吗?

ALTER PROCEDURE [dbo].[sp_InsertOrderHeader]
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO OrderHeaders (OrderStateId,DateTime) VALUES (1,GETDATE()); 
    SELECT CONVERT(int, SCOPE_IDENTITY()) Id
END
Run Code Online (Sandbox Code Playgroud)

Pan*_*vos 6

您可以为此使用OUTPUT子句:

INSERT INTO OrderHeaders (OrderStateId,DateTime) 
OUTPUT inserted.OrderStateId,inserted.DateTime
VALUES (1,GETDATE()); 
Run Code Online (Sandbox Code Playgroud)

OUTPUT子句用于返回所有数据修改语句中修改的值,即INSERT、DELETE、UPDATE、MERGE。与触发器一样,新值通过伪表访问inserted,而删除/覆盖的值通过deleted表访问