En anden mulighed ville være som returværdi for den lagrede procedure (jeg foreslår dog ikke dette, da det normalt er bedst for fejlværdier).
Jeg har inkluderet det som både, når det indsætter en enkelt række i tilfælde, hvor den lagrede procedure blev brugt af både andre SQL-procedurer og en frontend, der ikke kunne fungere med OUTPUT-parametre (IBATIS i .NET tror jeg):
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
Output-parameteren er lettere at arbejde med i T-SQL, når du kalder fra andre lagrede procedurer IMO, men nogle programmeringssprog har dårlig eller ingen understøttelse af output-parametre og fungerer bedre med resultatsæt.