Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Procédure stockée - renvoie l'identité en tant que paramètre de sortie ou scalaire

Une autre option serait comme valeur de retour pour la procédure stockée (ce n'est pas ce que je suggère cependant, car c'est généralement mieux pour les valeurs d'erreur).

Je l'ai inclus à la fois lorsqu'il insère une seule ligne dans les cas où la procédure stockée était consommée à la fois par d'autres procédures SQL et par un frontal qui ne pouvait pas fonctionner avec les paramètres OUTPUT (IBATIS dans .NET je crois):

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

Le paramètre de sortie est plus facile à utiliser dans T-SQL lors de l'appel à partir d'autres procédures stockées IMO, mais certains langages de programmation ont une prise en charge médiocre ou inexistante des paramètres de sortie et fonctionnent mieux avec les ensembles de résultats.