SQL Server Stored Procedure with Parameters (Français)

par: Greg Robidoux
Overview

La vraie puissance des procédures stockées est la capacité de transmettre des paramètres et de faire Gérer les différentes requêtes qui sont faites. Dans thistopic, nous examinerons le passage de valeurs de paramètres à une procédure stockée.

explication

tout comme vous avez la possibilité d’utiliser des paramètres avec votre code SQL, vous pouvez également configurer vos procédures stockées pour accepter une ou plusieurs valeurs de paramètre. Allexamples utilise la base de données AdventureWorks.,

création D’une procédure stockée SQL avec des paramètres

  1. pour créer une procédure stockée avec des paramètres en utilisant la syntaxe suivante:
  2. créer une procédure dbo.uspGetAddress @ City nvarchar (30) AS
  3. voir les détails et les exemples ci-dessous

requête SQL Server pour se transformer en procédure stockée

Voici la requête que nous voulons utiliser pour créer la procédure stockée.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

L’idée est de créer la procédure stockée où la Ville est passé dans thestored procédure de sorte qu’il peut créer des résultats dynamiques., Cela peut être fait comme suit en utilisantune variable. Si nous exécutons le code ci-dessous, il ne renverra que les résultats pour NewYork.

USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO

Nous pourrions utiliser cette approche et continuer à mettre à jour la variable @City, mais il existe une meilleure façon de le faire en créant une procédure stockée.

Créer une Procédure Stockée SQL Server avec Un Paramètre

Dans cet exemple, nous allons interroger la Personne.Table d’adresses de la AdventureWorksdatabase, mais au lieu de récupérer tous les enregistrements, nous la limiterons à une particularité., Cet exemple suppose qu’il y aura une correspondance exacte sur la valeur de la ville qui est passée.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO

pour appeler cette procédure stockée, nous l’exécutons comme suit:

EXEC dbo.uspGetAddress @City = 'New York'

suppression de la procédure stockée

Si vous avez créé la procédure stockée et que vous souhaitez recréer la procédure storedprocedure avec le même nom, vous pouvez supprimez-le en utilisant ce qui suitavant d’essayer de le créer à nouveau.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

Si vous essayez de créer la procédure stockée et il existe déjà, vous obtiendrez un message d’erreur.,

Msg 2714, niveau 16, état 3, Procédure uspGetAddress, ligne 1
il y a déjà un objet nommé ‘uspGetAddress’ dans la base de données.

procédure stockée SQL Server avec paramètre utilisant un caractère générique

Nous pouvons également faire la même chose, mais permettre aux utilisateurs de nous donner un point de départ pour rechercher les données.

ici, nous pouvons changer le « = » en un LIKE et utiliser le caractère générique »% ».

cela peut être exécuté comme suit pour trouver toutes les villes qui commencent par New.,

EXEC dbo.uspGetAddress @City = 'New'

erreur de procédure stockée SQL Server lorsque le paramètre N’est pas passé

dans les deux exemples suivants, il suppose qu’une valeur de paramètre sera toujours transmise. Si vous essayez d’exécuter la procédure sans passer un parametervalue, vous obtiendrez un message d’erreur tel que le suivant:

EXEC dbo.uspGetAddress
Msg 201, niveau 16, État 4, procédure uspGetAddress, Line0
procédure ou fonction ‘uspGetAddress’ attend le paramètre ‘@City’, qui n’a pas été fourni.,

procédure stockée SQL Server utilisant NULL comme paramètre par défaut

dans la plupart des cas,il est toujours recommandé de transmettre toutes les valeurs des paramètres, mais parfois ce n’est pas possible. Donc, dans cet exemple, nous utilisons L’option NULLEPOUR vous permettre de ne pas passer une valeur de paramètre. Si nous créons et exécutons cette storedprocedure telle quelle, elle ne renverra aucune donnée, car elle recherche des valeurs de ville égales à NULL.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO

Si nous courons à la suite, il travaillera, mais aucune donnée ne sera retourné.,

EXEC dbo.uspGetAddress

Nous pourrions changer cette procédure stockée et utiliser la fonction ISNULL pour contourner ce problème. Donc, si une valeur est passée, elle utilisera la valeur pour réduire le jeu de résultats et si une valeur n’est pas passée, elle retournera tous les enregistrements. (Remarque: Si la colonne ville a des valeurs NULL, cela n’inclura pas ces valeurs. Vous devrez ajouter une logique supplémentaire pour City IS NULL)

maintenant, si nous exécutons la commande ci-dessous, toutes les données seront renvoyées de la table.,

EXEC dbo.uspGetAddress

Créer une Procédure Stockée SQL Server avec Plusieurs Paramètres

la mise en place de plusieurs paramètres est très facile à faire. Vous avez juste besoin de listeach paramètre et le type de données séparés par une virgule comme indiqué ci-dessous.

pour exécuter cela, vous pouvez effectuer l’une des opérations suivantes:

dernière mise à jour: 4/3/2020

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *