Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como definir o resultado do procedimento armazenado exec para uma variável?


Ao invés de:
SET @S=EXEC spGetNthNo @a,@d,@n

Você precisa:
EXEC @S = spGetNthNo @a,@d,@n

E então dentro do procedimento, você precisa de algo como:
RETURN 100

ou:
RETURN @x

para o valor que você deseja para @S após a execução do procedimento.

Você também pode usar parâmetros de saída. Exemplo 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]