sql >> Base de Datos >  >> RDS >> Sqlserver

Procedimiento almacenado:devolver la identidad como parámetro de salida o escalar

Otra opción sería como valor de retorno para el procedimiento almacenado (aunque no sugiero esto, ya que suele ser lo mejor para los valores de error).

Lo he incluido tanto cuando está insertando una sola fila en los casos en que el procedimiento almacenado estaba siendo consumido por otros procedimientos SQL y un front-end que no podía funcionar con parámetros de SALIDA (IBATIS en .NET, creo):

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

Es más fácil trabajar con el parámetro de salida en T-SQL cuando se llama desde otros procedimientos almacenados en mi opinión, pero algunos lenguajes de programación tienen poca o ninguna compatibilidad con los parámetros de salida y funcionan mejor con conjuntos de resultados.