Articles

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ée uspFindProducts., Chaque paramètre doit commencer par le signe@. Les mots clés AS 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_priceet @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.