Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie setze ich das Ergebnis der gespeicherten Prozedur exec auf eine Variable?

Statt:

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

Sie benötigen:

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

Und dann brauchen Sie innerhalb der Prozedur so etwas wie:

RETURN 100

oder:

RETURN @x

für den gewünschten Wert für @S, nachdem die Prozedur ausgeführt wurde.

Sie können auch Ausgabeparameter verwenden. Kombiniertes Beispiel:

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]