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

Come impostare il risultato della stored procedure exec su una variabile?

Invece di:

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

Hai bisogno di:

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

E poi all'interno della procedura, hai bisogno di qualcosa come:

RETURN 100

oppure:

RETURN @x

per il valore desiderato per @S dopo l'esecuzione della procedura.

È inoltre possibile utilizzare i parametri di output. Esempio combinato:

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]