Ett annat alternativ skulle vara som returvärde för den lagrade proceduren (jag föreslår dock inte detta, eftersom det vanligtvis är bäst för felvärden).
Jag har inkluderat det som både när det infogar en enda rad i fall där den lagrade proceduren förbrukades av både andra SQL-procedurer och ett gränssnitt som inte kunde fungera med OUTPUT-parametrar (IBATIS i .NET tror jag):
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
Utdataparametern är lättare att arbeta med i T-SQL när man anropar från andra lagrade procedurer IMO, men vissa programmeringsspråk har dåligt eller inget stöd för utdataparametrar och fungerar bättre med resultatuppsättningar.