Procédure stockée SQL Server avec des paramètres

Comment créer une procédure stockée SQL Server avec des paramètres? Pour rappel, une procédure stockée regroupe et ordonnance un ensemble de commandes SQL. Comment intégrer dans une procédure stockée une requête SELECT sur la table Clients de notre base de données SQL Server? Par exemple, au lieu d’afficher toutes les données de la table, pour afficher un seul client, il faut filtrer grâce au paramètre passé en entrée.

 

Comment créer une procédure stockée SQL Server avec des paramètres?

Avant d’exécuter le script de création de la procédure stockée, créer au préalable la table Clients. Ensuite, utiliser le Script SQL Server de création de la table Clients disponible ici

Requête et résultat de la Requête Select * from [dbo].[CLIENTS];

Exemple de procédure stockée avec un seul paramètre

CREATE PROCEDURE uspGetClient 
  @NoClient int
AS
  SELECT	*
  FROM	[dbo].[CLIENTS]
  WHERE	[NOCLIENT] = @NoClient
GO

Pour appeler cette procédure stockée, exécuter le code qui suit:

EXEC uspGetClient @NoClient = 3

Exemple de création et exécution de procédure stockée SQL Server avec un paramètre.

Dans l’exemple précédent, l’appel de la procédure transmet la valeur du paramètre. De la même manière, exécuter la procédure SQL Server sans fournir de valeur au paramètre @NoClient, alors le message d’erreur suivant est affiché :

EXEC uspGetClient

Msg 201, Level 16, State 4, Procedure uspGetClient, Line 0
Procedure or function ‘uspGetClient’ expects parameter ‘@NoClient’, which was not supplied.

Comment gérer les valeurs par défaut des paramètres d’une procédure stockée SQL Server?

Pour aller plus loin et gérer les valeurs par défaut, c’est simple, dans la plupart des cas, il est conseillé de passer une valeur aux paramètres.

Dans la pratique, ce n’est pas toujours possible voire utile. Pour prévoir le cas où un appel à la procédure se fait sans paramètre, utiliser la valeur NULL. En effet NULL permet d’initialiser une valeur de paramètre dans la procédure et éviter les erreurs.

Après cela, exécuter cette deuxième version de la procédure stockée sans paramètre.

Cette fois, aucune erreur et la requête ne retourne aucune ligne car tous les clients contenus dans la table ont un numéro de client!

IF EXISTS (SELECT name FROM sysobjects	WHERE name = 'uspGetClient' AND type = 'P')
  DROP PROCEDURE uspGetClient
GO

CREATE PROCEDURE uspGetClient 
  @NoClient int = NULL
AS
  SELECT	*
  FROM	[dbo].[CLIENTS]
  WHERE	[NOCLIENT] = @NoClient
GO

EXEC uspGetClient

Suppression, création et exécution de procédure stockée SQL Server avec un paramètre optionnel.

Comment créer une procédure stockée SQL Server avec plusieurs paramètres?

C’est le même principe qu’avec un paramètre unique, et il faut lister, initialiser et appeler chaque paramètre indépendamment. Ainsi, énumérer et séparer par une virgule chaque paramètre et son type de données, comme dans cet exemple de code SQL:

IF EXISTS (SELECT name FROM sysobjects	WHERE name = 'uspGetClient' AND type = 'P')
  DROP PROCEDURE uspGetClient
GO

CREATE PROCEDURE uspGetClient 
  @NoClient	int = NULL, 
  @Ville		nvarchar(20) = NULL
AS
  SELECT	*
  FROM	[dbo].[CLIENTS]
  WHERE	[NOCLIENT]	= @NoClient
    OR	[VILLE]		= @Ville
GO

EXEC uspGetClient @NoClient = 1, @Ville = 'Lyon';

EXEC uspGetClient @NoClient = 1;

EXEC uspGetClient @Ville = 'Paris';

En effet, on peut appeler chacun des paramètres seuls, ou les deux simultanément. Il est possible de ne passer aucun paramètre car la procédure initialise les valeurs par défaut, ici avec la valeur NULL.

Suppression, création et exécution de procédure stockée SQL Server avec des paramètres.

Enfin, si nous appelons la procédure stockée uspGetClient sans paramètre, elle retourne dans ce cas toutes les données contenues dans la table Clients.

En conclusion, dans cet article nous avons vu comment créer une procédure stockée SQL Server avec des paramètres. Cet article est utile? Partagez-le!

Soyez le premier à commenter

Laisser un commentaire