Set d'une variable retourne null

bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 25 juil. 2006 à 10:51
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 - 25 juil. 2006 à 22:24
salut !
qu'est-ce qui ne va pas dans ma procédure ?
quelqu'un peut m'aider ? pourquoi @id_pers vaut null apres le set ?
merci d'avance...

CREATE PROCEDURE SelectRoleParForm  @id_ss_serv bigint, @id_form bigint, @wwid_pers varchar(50)


AS
 declare @id_pers bigint


 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

1 réponse

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
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
0
Rejoignez-nous