Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gespeicherte Prozedur - Identität als Ausgabeparameter oder Skalar zurückgeben

Eine andere Option wäre als Rückgabewert für die gespeicherte Prozedur (ich schlage dies jedoch nicht vor, da dies normalerweise am besten für Fehlerwerte ist).

Ich habe es als beide eingefügt, wenn es eine einzelne Zeile in Fällen einfügt, in denen die gespeicherte Prozedur sowohl von anderen SQL-Prozeduren als auch von einem Front-End verwendet wurde, das nicht mit OUTPUT-Parametern arbeiten konnte (IBATIS in .NET, glaube ich):

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

Der Ausgabeparameter ist in T-SQL beim Aufrufen von anderen gespeicherten Prozeduren einfacher zu handhaben, IMO, aber einige Programmiersprachen haben eine schlechte oder keine Unterstützung für Ausgabeparameter und arbeiten besser mit Ergebnismengen.