2009-11-27 18 views
76

Sto scrivendo alcuni stored proc in SQL Server 2008 e mi chiedevo se il concetto di parametri di input facoltativi fosse possibile qui?parametri facoltativi in ​​stored procedure di SQL Server?

Suppongo che potrei sempre passare in NULL per i parametri che non voglio usare, controllare il valore nel proc memorizzato, quindi prendere le cose da lì, ma ero interessato se il concetto è disponibile qui. Grazie!

+1

Prendete un lungo letto sul sito di Erland, ha qualche grande informazioni condizioni di ricerca dinamici: http://www.sommarskog.se/dyn-search.html –

risposta

140

È possibile dichiarare come questo

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 
+0

Grazie per entrambe le vostre risposte! – larryq

+0

cosa succede se il parametro è un tipo di identificatore univoco? ex. @userId uniqueidentifier –

+1

Rispondendo a @RKSharma per chiunque si stia chiedendo anche - funziona esattamente con identificatori univoci. – rinukkusu

41

Sì, lo è. Dichiarare parametro come così:

@Sort varchar(50) = NULL 

Ora non hanno nemmeno bisogno di passare il parametro in questo verrà impostato a NULL (o qualsiasi altra cosa si sceglie di default)..

+0

È non serve nemmeno il '= NULL' –

+3

Sei sicuro di non averne bisogno? –

+32

Ponies OMG, se non includi = , allora il parametro sarà richiesto. Puoi passarlo come NULL, ma poi devi solo spostare quella logica nelle applicazioni che usano la procedura. –

Problemi correlati