如何 select 在存储过程中插入值?

How can I select the inserted values in a stored procedure?

我正在使用在 table 中插入值的存储过程:ID 和当前日期。我知道如何使用 SCOPE_IDENTITY 获取最后使用的 ID,但我还需要 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

您可以为此使用 OUTPUT 子句:

INSERT INTO OrderHeaders (OrderStateId,DateTime) 
OUTPUT inserted.OrderStateId,inserted.DateTime
VALUES (1,GETDATE()); 

OUTPUT子句用于return所有数据修改语句中的修改值,即INSERT、DELETE、UPDATE、MERGE。与触发器一样,新值通过 inserted 伪 table 访问,而 deleted/overwritten 值通过 deleted table