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

¿Cómo establecer el resultado del procedimiento almacenado exec en una variable?

En lugar de:

SET @S=EXEC spGetNthNo @a,@d,@n

Necesitas:

EXEC @S = spGetNthNo @a,@d,@n

Y luego, dentro del procedimiento, necesita algo como:

RETURN 100

o:

RETURN @x

para el valor que desea para @S después de que se ejecute el procedimiento.

También puede utilizar parámetros de salida. Ejemplo combinado:

IF OBJECT_ID('tempdb..#example') IS NOT NULL DROP PROCEDURE #example
GO

CREATE PROCEDURE #example
  @output_param INT OUTPUT
AS BEGIN
   SET @output_param = 100
   RETURN 200
END
GO

DECLARE @return INT, @param INT
EXEC @return = #example @output_param = @param OUTPUT
SELECT @return as [return value], @param as [output parameter]