Requête insert dans une procédure stockée SQL Server

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

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

Comment insérer des données depuis une procédure stockée SQL Server avec insert ? 

Ici aussi 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
  INSERT INTO dbo.CLIENTS (NOM, VILLE) 
  VALUES (@Nom, @Ville);
GO

-- 3 Clients insérés
SET NOCOUNT OFF;
EXECUTE uspInsertClient	@Nom = 'MAMMADOU',	@Ville = 'Toulouse';
EXECUTE uspInsertClient	@Nom = 'KARIM',		@Ville = 'Nantes';
EXECUTE uspInsertClient	@Nom = 'ISAAC',		@Ville = 'Versailles';

 

Cet exemple de requête insert dans une 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.

Comment ne pas afficher le nombre de lignes insérées par la requête d’insertion ? 

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:

-- 3 Clients insérés
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;

Soyez le premier à commenter

Laisser un commentaire