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:
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.
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
Quand j'exécute la procédure stockée:
Je reçoi ce message d'erreur:
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
Si vous pouvez me résoudre ce problème, je serai très reconnaissant.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.
Merci BCP,
Cordialement Votre,
Naoufal
Partager