SQL Server Stored Procedure Parameters (Français)
dans le tutoriel précédent, vous avez appris à créer une procédure stockée simple qui enveloppe une instruction SELECT
. Lorsque vous appelez cette procédure stockée, elle exécute simplement la requête et renvoie un jeu de résultats.
Dans ce tutoriel, nous allons étendre la procédure stockée qui vous permet de passer une ou plusieurs valeurs. Le résultat de la procédure stockée changera en fonction des valeurs des paramètres.,Création d’une procédure stockée avec un paramètre
la requête suivante renvoie une liste de produits à partir de la table products
dans l’exemple de base de données:
Vous pouvez créer une procédure stockée qui enveloppe cette requête en utilisant l’instruction CREATE PROCEDURE
:cette fois, nous pouvons ajouter un paramètre à la procédure stockée pour trouver les produits dont les prix catalogue sont supérieurs à un prix d’entrée:
dans cet exemple:
- tout d’abord, nous avons ajouté un paramètre nommé
@min_list_price
à la procédure stockéeuspFindProducts
., Chaque paramètre doit commencer par le signe@
. Les mots clésAS DECIMAL
spécifient le type de données du paramètre@min_list_price
. Le paramètre doit être entouré des crochets d’ouverture et de fermeture. - Deuxièmement, nous avons utilisé le paramètre
@min_list_price
dans la clauseWHERE
de la déclarationSELECT
pour filtrer uniquement les produits dont les prix catalogue sont supérieurs ou égaux à la@min_list_price
.,
l’Exécution d’une procédure stockée avec un paramètre
Pour exécuter le uspFindProducts
procédure stockée, passer un argument à lui de la façon suivante:
Code language: SQL (Structured Query Language) (sql)
La procédure stockée renvoie tous les produits dont les tarifs sont supérieurs ou égaux à 100.,
Si vous modifiez l’argument à 200, vous obtiendrez un résultat différent dans le jeu:
Code language: SQL (Structured Query Language) (sql)
Création d’une procédure stockée avec des paramètres multiples
les procédures Stockées peuvent prendre un ou plusieurs paramètres. Les paramètres sont séparés par des virgules.,iv> procédure stockée en ajoutant un paramètre supplémentaire nommé @max_list_price
:
Une fois la procédure stockée modifiée avec succès, vous pouvez l’exécuter en passant deux arguments, l’un pour @min_list_price
et l’autre pour @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
ce qui suit montre la sortie:
en utilisant les paramètres nommés
dans le cas où les procédures stockées ont plusieurs paramètres, il est mieux et plus clair pour exécuter les procédures stockées à l’aide de paramètres nommés.,
Par exemple, l’instruction suivante exécute le uspFindProducts
procédure stockée à l’aide des paramètres nommés @min_list_price
et @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
Le résultat de la procédure stockée est la même, cependant, la déclaration est de plus en plus évidents.
création de paramètres de texte
l’instruction suivante ajoute le paramètre@name
en tant que paramètre de chaîne de caractères à la procédure stockée.,
dans la clause WHERE
de la déclaration SELECT
, nous avons ajouté la condition suivante:
Code language: SQL (Structured Query Language) (sql)
ce faisant, la procédure stockée renvoie les produits dont les prix catalogue sont compris entre les prix catalogue min et max et les noms de produits contiennent également texte que vous transmettez.,
Une fois la procédure stockée modifiée avec succès, vous pouvez l’exécuter comme suit:
dans cette déclaration, nous avons utilisé la procédure stockéeuspFindProducts
pour trouver le produit dont les prix catalogue sont compris entre 900 et 1 000 et dont les noms contiennent le motTrek
.,
L’image suivante montre le résultat:
la Création de paramètres facultatifs
Lors de l’exécution de la balise uspFindProducts
procédure stockée, vous devez passer tous les trois arguments correspondant aux trois paramètres.
SQL Server vous permet de spécifier des valeurs par défaut pour les paramètres de sorte que lorsque vous appelez des procédures stockées, vous pouvez ignorer les paramètres avec des valeurs par défaut.,
Voir la procédure stockée suivante:
Dans cette procédure stockée, nous avons assigné 0
comme la valeur par défaut de la balise @min_list_price
paramètre et 999,999
comme la valeur par défaut de la balise @max_list_price
paramètre.,
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.,
Le @min_list_price
et @max_list_price
paramètres sont appelés paramètres facultatifs.
bien sûr, vous pouvez également passer les arguments à l’option paramètres., Par exemple, l’instruction suivante renvoie tous les produits dont les prix de liste sont supérieurs ou égaux à 6,000
et les noms contiennent le mot Trek
:
Code language: SQL (Structured Query Language) (sql)
en utilisant null comme valeur par défaut
dans la procédure stockée uspFindProducts
, nous avons utilisé 999,999
comme prix catalogue maximum par défaut. Ce n’est pas robuste parce qu’à l’avenir, vous pouvez avoir des produits avec les prix catalogue qui sont plus élevés que cela.,
Une technique habituelle pour éviter cela est d’utiliser NULL
comme valeur par défaut pour les paramètres:
Dans le WHERE
l’article, nous avons changé la condition pour gérer NULL
valeur de la @max_list_price
paramètre:
Code language: SQL (Structured Query Language) (sql)
La déclaration suivante exécute le uspFindProducts
procédure stockée pour trouver le produit dont les tarifs sont supérieurs ou égaux à 500 et les noms contiennent le mot Haro
.,
Code language: SQL (Structured Query Language) (sql)
Dans ce tutoriel, vous avez appris comment créer et exécuter des procédures stockées avec un ou plusieurs paramètres. Vous avez également appris à créer des paramètres facultatifs et à utiliser NULL comme valeurs par défaut pour les paramètres.