sql >> Databáze >  >> RDS >> Sqlserver

Uložená procedura - vrátí identitu jako výstupní parametr nebo skalár

Další možností by byla návratová hodnota pro uloženou proceduru (nedoporučuji to však, protože to je obvykle nejlepší pro chybové hodnoty).

Zahrnul jsem to jako obojí, když vkládá jeden řádek v případech, kdy byla uložená procedura spotřebována jak jinými SQL procedurami, tak front-endem, který nemohl pracovat s parametry OUTPUT (IBATIS v .NET věřím):

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

S výstupním parametrem se v T-SQL snáze pracuje při volání z jiných uložených procedur IMO, ale některé programovací jazyky mají špatnou nebo žádnou podporu výstupních parametrů a lépe pracují se sadami výsledků.



  1. Kurz ovládání Microsoft TreeView

  2. Jak přeskočit řádky, které porušují omezení při vkládání dat do SQLite

  3. Naplnit JFreechart TimeSeriesCollection z Mysql DB?

  4. Řetězcové literály a znaky escape v postgresql