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

Stored procedure:restituisce l'identità come parametro di output o scalare

Un'altra opzione sarebbe come valore di ritorno per la procedura memorizzata (non lo suggerisco però, poiché di solito è il migliore per i valori di errore).

L'ho incluso come entrambi quando inserisce una singola riga nei casi in cui la stored procedure veniva utilizzata da entrambe le altre procedure SQL e da un front-end che non poteva funzionare con i parametri OUTPUT (IBATIS in .NET credo):

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

È più facile lavorare con il parametro di output in T-SQL quando si chiama da altre stored procedure IMO, ma alcuni linguaggi di programmazione hanno un supporto scarso o nullo per i parametri di output e funzionano meglio con i set di risultati.