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

Kann ich einen optionalen OUTPUT-Parameter in einer gespeicherten Prozedur haben?

Sowohl Eingangs- als auch Ausgangsparametern können Voreinstellungen zugewiesen werden. In diesem Beispiel:

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

der erste Parameter ist erforderlich, und der zweite und der dritte sind optional – wenn sie nicht von der aufrufenden Routine gesetzt werden, werden ihnen die Standardwerte zugewiesen. Versuchen Sie, damit und mit der folgenden Testaufrufroutine in SSMS herumzuspielen, indem Sie verschiedene Werte und Einstellungen verwenden, um zu sehen, wie alles zusammenarbeitet.

DECLARE @Output int

SET @Output = 3

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

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