set @id_pers=(select id_pers from personne where [mailto:wwid_pers=@wwid_pers wwid_pers=@wwid_pers])
if(@id_ss_serv = 0)
begin
select distinct *
from formulaire, proposer_role, role, etre_attribue
where formulaire.id_form=proposer_role.id_form AND proposer_role.id_role=role.id_role AND
date_annul_role='01/01/1900' AND [mailto:formulaire.id_form=@id_form formulaire.id_form=@id_form]
AND role.id_role NOT IN (select id_role from etre_attribue where [mailto:id_pers=@id_pers id_pers=@id_pers])
end
else
begin
select distinct *
from formulaire, proposer_role, role, sous_service, etre_attribue
where formulaire.id_form=proposer_role.id_form AND proposer_role.id_role=role.id_role AND
date_annul_role='01/01/1900' AND [mailto:formulaire.id_form=@id_form formulaire.id_form=@id_form] AND sous_service.id_ss_serv=role.id_ss_serv
AND role.id_role NOT IN (select id_role from etre_attribue where [mailto:id_pers=@id_pers id_pers=@id_pers])
AND [mailto:sous_service.id_ss_serv=@id_ss_serv sous_service.id_ss_serv=@id_ss_serv]
end
GO
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 25 juil. 2006 à 22:24
Souvent ce type de problème vient d'une erreur dans la condition: si aucune ligne ne cosrrespond a la condition du WHERE alors c'est NULL qui est Assigné,
Est tu bien sur que @wwid_pers est un nvarchar(50)
Essai de Tester ta procédure par petit bout :
tu test d'abord :
select id_pers from personne where [mailto:wwid_pers=@wwid_pers wwid_pers=@wwid_pers]
en remplacant @wwid_pers par une valeur possible,
si tu utilise SQL Entreprise Manager place un
PRINT((select id_pers from personne where [mailto:wwid_pers=@wwid_pers wwid_pers=@wwid_pers]))
avant l'assignation pour vérifier que ca te retourne la valeur attendu