sql >> Database teknologi >  >> RDS >> Sqlserver

Lagret procedure - returner identitet som outputparameter eller skalar

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.



  1. Forstå log buffer skylninger

  2. Plsql for at stave nummer (valuta) til italiensk valuta uden hardkodet oversættelsesnummer

  3. 7 gratis værktøjer til databasediagram for travle datafolk

  4. cx_Oracle forbinder ikke, når du bruger SID i stedet for tjenestenavn på forbindelsesstrengen