Bonjour Tout le monde,

J'ai rencontré un sérieux problème dans un projet.
Je vous explique la situation avant de procéder à un exemple concret:
Nous possédons une table Congés et on souhaite afficher la liste des personnes qui ont demandé le congé entre 2 dates.
Après la création de la procédure stockées, une erreur s'est produite sur la conversion de la date en nvarchar.

Si vous pouvez m'aider à résoudre ce petit problème dans cet exemple:
table Personne qui comporte comme Colonnes: idPersonne int, nomPersonne nvarchar(50) et dateNaissancePersonne DateTime,
La procédure qui permet d'extraire les personnes qui ont la date de naissance > à la date passée en argument:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
--On Vérifie si la procédure existe déjà, si oui, on la supprime
IF EXISTS (SELECT name
       FROM sysobjects
       WHERE name = 'Procedure_sur_Personne'
       AND type = 'P')
    DROP PROCEDURE [dbo].[Procedure_sur_Personne]
GO
 
 
--On passe un argument DateTime
 
CREATE PROCEDURE [dbo].[Procedure_sur_Personne] (@DateNaissancePersonne DateTime = null)
AS
declare @sql nvarchar(300)
BEGIN
    --strip any time portion from the date passed in
    SELECT @DateNaissancePersonne = Convert(datetime,convert(char(10),@DateNaissancePersonne,101)) 
set @sql = 'SELECT * FROM dbo.Personne';
if @DateNaissancePersonne is not null
	set @sql =@sql + ' WHERE (dateNaissancePersonne > '+ @DateNaissancePersonne +')';
print @sql;
exec @sql;
 
END
Si la date a été passé en argument, on va ajouter la clause WHERE qui extrait les personnes par date, sinon on affiche tous les personnes.

Quand j'exécute la procédure stockée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
DECLARE @DN DateTime
SET @DN = '01/01/1970'
EXECUTE [dbo].[Procedure_sur_Personne] @DN
Je reçoi ce message d'erreur:
Msg*241, Niveau*16, État*1, Procédure*Procedure_sur_Personne, Ligne*13
Échec de la conversion d'une valeur datetime à partir d'une chaîne de caractères.
Si vous pouvez me résoudre ce problème, je serai très reconnaissant.

Merci BCP,

Cordialement Votre,

Naoufal