Друг вариант би бил като връщана стойност за съхранената процедура (въпреки това не предлагам това, тъй като обикновено това е най-доброто за стойностите на грешки).
Включих го като и двете, когато вмъква един ред в случаите, когато съхранената процедура се консумира както от други SQL процедури, така и от преден край, който не може да работи с OUTPUT параметри (IBATIS в .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
Изходният параметър е по-лесен за работа в T-SQL при извикване от други съхранени процедури IMO, но някои езици за програмиране имат лоша или никаква поддръжка за изходни параметри и работят по-добре с набори от резултати.