Procédure stockée SQL Server avec Insert Into

Comment insérer des lignes dans une table avec une requête insert into depuis une procédure stockée SQL Server ? Quel code utiliser pour afficher ou masquer le nombre de lignes insérées par la procédure ? Cet exemple de procédure T-SQL insère des lignes dans une table de clients.

Insérer des lignes depuis une procédure stockée SQL Server

Tout d’abord, vérifier au préalable que la table d’exemple n’existe pas. Si la table existe, alors la supprimer avec la commande DROP TABLE. Ensuite créer la table des clients pour insérer les lignes de l’exemple.

IF EXISTS ( 
	SELECT 1 FROM sys.objects 
	WHERE  object_id = object_id(N'[dbo].[CLIENTS]') 
		  AND type in (N'U') 
)
DROP TABLE [dbo].[CLIENTS];

CREATE TABLE [dbo].[CLIENTS] (
  [NOCLIENT] int IDENTITY(1,1),
  [NOM]	nvarchar(20),
  [VILLE] nvarchar(20)
);

GO

Créer la procédure stockée SQL Server et y ajouter la commande Insert Into

Commencer par vérifier si la procédure stockée existe déjà dans la base et la supprimer si nécessaire. Dans un deuxième temps créer la procédure stockée uspInsertClient pour insérer dans la table des clients deux champs passés en paramètres, le nom et la ville.

IF EXISTS(	SELECT 1 FROM sys.objects 
      WHERE object_id = object_id(N'uspInsertClient') AND type in (N'P') )
DROP PROCEDURE uspInsertClient;
GO

CREATE PROCEDURE uspInsertClient
  @Nom	nvarchar(20),
  @Ville	nvarchar(20)
AS
BEGIN
  INSERT INTO dbo.CLIENTS (NOM, VILLE) 
  VALUES (@Nom, @Ville);
END

GO

Exécuter la procédure et insérer 3 nouveaux clients dans la table.

-- Insérer trois nouveaux clients
SET NOCOUNT OFF;
EXECUTE uspInsertClient	@Nom = 'MAMMADOU',	@Ville = 'Toulouse';
EXECUTE uspInsertClient	@Nom = 'KARIM',	@Ville = 'Nantes';
EXECUTE uspInsertClient	@Nom = 'ISAAC',	@Ville = 'Versailles';
Procédure stockée SQL Server avec INSERT INTO
Procédure stockée SQL Server avec INSERT INTO

 

Cet exemple de requête insert dans la procédure stockée SQL Server permet d’insérer des lignes dans une table. Le code vérifie au préalable l’existence de la procédure pour éviter les erreurs à la création.

Le code permet d’appeler facilement la procédure créée avec les paramètres. Et donc de standardiser l’insertion des données dans cette table.

Ne pas afficher le nombre de lignes insérées par la requête Insert Into

La commande « SET NOCOUNT ON » indique à SQL Server de ne pas retourner le nombre de lignes affectées. Dans notre cas, insérées par la requête SQL INSERT. Ainsi, si l’option est activée, c’est à dire « SET NOCOUNT ON », le nombre de ligne n’est pas remonté, comme dans l’exemple ci-dessous.

-- Insérer trois clients avec l'option activée
SET NOCOUNT ON;
EXECUTE uspInsertClient	@Nom = 'MAMMADOU',	@Ville = 'Toulouse';
EXECUTE uspInsertClient	@Nom = 'KARIM',		@Ville = 'Nantes';
EXECUTE uspInsertClient	@Nom = 'ISAAC',		@Ville = 'Versailles';

Enfin, contrôler le résultat de la requête d’insertion de données avec une commande SELECT sur la table des clients. Noter que les trois clients sont présents deux fois chacun dans la table. Ce qui correspond aux six exécutions de la commande SQL. Soit trois fois avec l’option d’affichage du nombre de ligne activée et trois fois avec l’option d’affichage désactivée.

SELECT * FROM dbo.CLIENTS;

Voici enfin un tutoriel pour créer une procédure stockée SQL qui retourne des valeurs avec l’option OUTPUT.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*