Một tùy chọn khác sẽ là giá trị trả về cho thủ tục được lưu trữ (mặc dù vậy, tôi không đề xuất điều này, vì điều đó thường tốt nhất cho các giá trị lỗi).
Tôi đã bao gồm nó như cả hai khi nó chèn một hàng trong trường hợp thủ tục được lưu trữ đang được sử dụng bởi cả các thủ tục SQL khác và giao diện người dùng không thể hoạt động với các tham số OUTPUT (Tôi tin rằng IBATIS trong .NET):
CREATE PROCEDURE My_Insert
@col1 VARCHAR(20),
@new_identity INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO My_Table (col1)
VALUES (@col1)
SELECT @new_identity = SCOPE_IDENTITY()
SELECT @new_identity AS id
RETURN
END
Tham số đầu ra dễ làm việc hơn trong T-SQL khi gọi từ các thủ tục được lưu trữ khác IMO, nhưng một số ngôn ngữ lập trình có hỗ trợ kém hoặc không hỗ trợ cho các tham số đầu ra và hoạt động tốt hơn với các tập kết quả.