Articles

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 il uspFindProducts stored procedure., Ogni parametro deve iniziare con il segno@. Le parole chiave AS 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_pricee @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.