Se pueden asignar valores predeterminados tanto a los parámetros de entrada como a los de salida. En este ejemplo:
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
el primer parámetro es obligatorio, y el segundo y el tercero son opcionales; si la rutina de llamada no los establece, se les asignarán los valores predeterminados. Intente jugar con él y la siguiente rutina de llamada de prueba en SSMS usando diferentes valores y configuraciones para ver cómo funciona todo junto.
DECLARE @Output int
SET @Output = 3
EXECUTE MyTest
@Data1 = 1
,@Data2 = 2
,@Data3 = @Output output
PRINT '---------'
PRINT @Output