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. Nous allons intégrer dans une procédure stockée une requête sur la table Clients de notre base de données SQL Server. Cependant au lieu d’afficher toutes les données de la table, nous allons uniquement nous servir d’un seul client, filtré grâce au paramètre passé en entrée.

 

Exemple de procédure stockée SQL Server avec des paramètres?

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

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, on suppose que l’appel la procédure transmet la valeur du paramètre. Si vous exécutez la procédure sans fournir une valeur au paramètre @NoClient, vous obtenez le message d’erreur suivant:

EXEC uspGetClient

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

 

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

Dans la plupart des cas, il est conseillé de passer une valeur pour tous les paramètres, cependant ce n’est pas toujours possible. Pour prévoir le cas ou un appel à la procédure se fait sans paramètre, utiliser l’option NULL pour initialiser une valeur de paramètre dans la procédure et éviter les erreurs. Exécutez donc cette deuxième version de la procédure stockée sans paramètre.

Pas d’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.

 

Exemple de 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 l’exemple:

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';

 

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

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

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

Soyez le premier à commenter

Laisser un commentaire