Utiliser une requête INSERT dans une procédure stockée SQL Server




Comment insérer des lignes avec une requête INSERT depuis une procédure stockée avec SQL Server ? Quelle option pour afficher le nombre de lignes insérées par la procédure stockée? Comment écrire une procédure SQL Server avec un INSERT ? 

 

Tout d’abord, vérifier au préalable que la table d’exemple n’existe pas, si elle existe alors nous la supprimer avec la commande DROP TABLE. Ensuite créer la table CLIENTS qui nous servira à insérer les lignes.

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 écrire une procédure stockée SQL Server avec une commande INSERT ?

Ici aussi commencer par vérifier si la procédure 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';

 

Comment ne pas afficher le nombre de lignes affectées par la requête INSERT dans la procédure stockée ?

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 INSERT avec une commande SELECT sur la table des Clients.

SELECT * FROM dbo.CLIENTS;