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

Posso ter um parâmetro OUTPUT opcional em um procedimento armazenado?


Ambos os parâmetros de entrada e saída podem ser atribuídos como padrões. Neste exemplo:
CREATE PROCEDURE MyTest
  @Data1 int
 ,@Data2 int = 0
 ,@Data3 int = null output

AS

PRINT @Data1
PRINT @Data2
PRINT isnull(@Data3, -1)

SET @Data3 = @Data3 + 1

RETURN 0

o primeiro parâmetro é obrigatório e o segundo e o terceiro são opcionais - se não forem definidos pela rotina de chamada, eles receberão os valores padrão. Tente brincar com ele e com a seguinte rotina de chamada de teste no SSMS usando valores e configurações diferentes para ver como tudo funciona em conjunto.
DECLARE @Output int

SET @Output = 3

EXECUTE MyTest
  @Data1 = 1
 ,@Data2 = 2
 ,@Data3 = @Output output

PRINT '---------'
PRINT @Output