wake-up-neo.com

optionale Parameter in SQL Server gespeicherter Prozess?

Ich schreibe einige gespeicherte Prozeduren in SQL Server 2008 und fragte mich, ob das Konzept optionaler Eingabeparameter hier möglich ist. 

Ich vermute, ich könnte immer NULL für Parameter übergeben, die ich nicht verwenden möchte. Überprüfen Sie den Wert in der gespeicherten Prozedur und nehmen Sie die Dinge von dort. Vielen Dank! 

93
larryq

Sie können es so erklären

CREATE PROCEDURE MyProcName
    @Parameter1 INT = 1,
    @Parameter2 VARCHAR (100) = 'StringValue',
    @Parameter3 VARCHAR (100) = NULL
AS

/* check for the NULL / default value (indicating nothing was passed */
if (@Parameter3 IS NULL)
BEGIN
    /* whatever code you desire for a missing parameter*/
    INSERT INTO ........
END

/* and use it in the query as so*/
SELECT *
FROM Table
WHERE Column = @Parameter
166
Raj More

Ja, so ist es. Parameter wie folgt deklarieren:

@Sort varchar(50) = NULL

Nun müssen Sie den Parameter nicht einmal weitergeben. Der Standardwert ist NULL (oder was auch immer Sie als Standard festlegen möchten).

47
Mike Cole

Zumindest ab 2014 können Sie einen Standard festlegen, und es wird der Fehler NICHT angezeigt, wenn Sie diesen Parameter nicht übergeben. Teilbeispiel: Der 3. Parameter wird optional hinzugefügt. Exec der eigentlichen Prozedur mit nur den ersten beiden Parametern funktionierte einwandfrei

exec getlist 47,1,0

create procedure getlist
   @convId int,
   @SortOrder int,
   @contestantsOnly bit = 0
as
0
billpennock