SQL Server Stored Procedure Parametri
Nel tutorial precedente, avete imparato come creare una semplice stored procedure che avvolge un SELECT
istruzione. Quando si chiama questa stored procedure, esegue semplicemente la query e restituisce un set di risultati.
In questo tutorial, estenderemo la stored procedure che consente di passare uno o più valori ad esso. Il risultato della stored procedure cambierà in base ai valori dei parametri.,Creazione di una stored procedure con un parametro
La query seguente restituisce una lista di prodotti da products
tabella nel database di esempio:
È possibile creare una stored procedure che avvolge questa query utilizzando il CREATE PROCEDURE
dichiarazione:
Code language: SQL (Structured Query Language) (sql)
Tuttavia, questa volta siamo in grado di aggiungere un parametro per la stored procedure per trovare i prodotti i cui prezzi di listino sono superiori a un prezzo ingresso:
In questo esempio:
- in Primo luogo, abbiamo aggiunto un parametro denominato
@min_list_price
per iluspFindProducts
stored procedure., Ogni parametro deve iniziare con il segno@
. Le parole chiaveAS DECIMAL
specificano il tipo di dati del parametro@min_list_price
. Il parametro deve essere circondato dalle parentesi di apertura e chiusura. - In secondo luogo, abbiamo usato il parametro
@min_list_price
nella clausolaWHERE
dell’istruzioneSELECT
per filtrare solo i prodotti i cui prezzi di listino sono maggiori o uguali a@min_list_price
.,
Esecuzione di una stored procedure con un parametro
Per eseguire il uspFindProducts
stored procedure, si passa un argomento come segue:
Code language: SQL (Structured Query Language) (sql)
La stored procedure restituisce tutti i prodotti i cui prezzi di listino sono maggiori o uguali a 100.,
Se si cambia l’argomento a 200, si ottiene un set di risultati diversi:
Code language: SQL (Structured Query Language) (sql)
Creazione di una stored procedure con parametri multipli
Stored procedure può assumere uno o più parametri. I parametri sono separati da virgole.,iv> stored procedure, aggiungendo un ulteriore parametro denominato @max_list_price
a:
una Volta che la stored procedure viene modificato correttamente, è possibile eseguire passando due argomenti, uno per @min_list_price
e l’altro @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
mostra Il seguente output:
Utilizzando parametri denominati
nel caso In cui le stored procedure sono più parametri, è migliore e più chiaro per eseguire la stored procedure con parametri denominati.,
Per esempio, la seguente istruzione esegue il uspFindProducts
stored procedure con parametri denominati @min_list_price
e @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
Il risultato della stored procedure è la stessa tuttavia, l’affermazione è più che evidente.
Creazione di parametri di testo
La seguente istruzione aggiunge il parametro@name
come parametro di stringa di caratteri alla stored procedure.,
Nel WHERE
clausola di SELECT
istruzione, abbiamo aggiunto la seguente condizione:
Code language: SQL (Structured Query Language) (sql)
in questo modo, la stored procedure restituisce i prodotti i cui prezzi di listino sono compresi tra min e max prezzi di listino e i nomi di prodotto contengono anche un pezzo di testo che si passa.,
Una volta che la stored procedure è stata modificata correttamente, è possibile eseguirla come segue:
In questa istruzione, abbiamo usato lauspFindProducts
stored procedure per trovare il prodotto i cui prezzi di listino sono compresi tra 900 e 1.000 e i loro nomi contengono la parolaTrek
.,
l’immagine seguente mostra L’output:
Creazione di parametri opzionali
Quando si esegue il uspFindProducts
stored procedure, è necessario passare tutti e tre gli argomenti corrispondenti ai tre parametri.
SQL Server consente di specificare i valori predefiniti per i parametri in modo che quando si chiamano stored procedure, è possibile saltare i parametri con valori predefiniti.,
Consultare il seguente stored procedure:
In questa stored procedure, abbiamo ricevuto 0
come valore predefinito per il @min_list_price
parametro e 999,999
come valore predefinito per il @max_list_price
parametro.,
Once the stored procedure is compiled, you can execute it without passing the arguments to @min_list_price
and @max_list_price
parameters:
Code language: SQL (Structured Query Language) (sql)
In this case, the stored procedure used 0
for @min_list_price
parameter and 999,999
for the @max_list_price
parameter when it executed the query.,
I parametri@min_list_price
e@max_list_price
sono chiamati parametri opzionali.
Naturalmente, puoi anche passare gli argomenti ai parametri opzionali., Per esempio, l’istruzione seguente restituisce tutti i prodotti i cui prezzi di listino sono maggiore o uguale a 6,000
e i nomi che contengono la parola Trek
:
Code language: SQL (Structured Query Language) (sql)
Utilizzo di NULL come valore predefinito
Nel uspFindProducts
stored procedure, abbiamo usato 999,999
come predefinito il massimo prezzo di listino. Questo non è robusto perché in futuro si possono avere prodotti con i prezzi di listino che sono maggiori di quello.,
Una tipica tecnica per evitare questo è quello di utilizzare NULL
come valore di default per i parametri:
Nel WHERE
clausola, abbiamo cambiato la condizione per gestire NULL
valore @max_list_price
parametro:
Code language: SQL (Structured Query Language) (sql)
La seguente dichiarazione esegue il uspFindProducts
stored procedure per individuare il prodotto il cui elenco prezzi sono maggiori o uguali a 500 e i nomi che contengono la parola Haro
.,
Code language: SQL (Structured Query Language) (sql)
In questo tutorial, avete imparato come creare ed eseguire stored procedure con uno o più parametri. Hai anche imparato come creare parametri opzionali e utilizzare NULL come valori predefiniti per i parametri.