Salut a tous,
je debute en PL/SQL, et j'apprends sur le tas (grace a l'appli deja existante), mais j'ai un probleme incomprehensible pour une requete sous Forms
je bosse avec oracle 9i et forms developper 6
Var_Cpt_IDMOT est un number
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Select count(*) Into Var_Cpt_IDMOT from Ipl_Mot I, Mot M Where I.id_ipl_message in (select id_ipl_message from ipl_message where id_sys = Var_sys2) And I.Id_Mot = M.Id_Mot And num_mot||' '||code_proto = Var_Mot_Num_Mot_Code_Proto ;
Var_sys2 est un number qui contient 1392
Var_Mot_Num_Mot_Code_Proto est un varchar2(50) qui contient 'J28.4I ' (sans les quotes)
cette requete qui est censée me retourner 1 dans Var_Cpt_IDMOT me retourne 0
alors que lorsque j'execute la requete en dure (donc le contenu des variables a la place des variables) ca me renvoit bien 1
pareil lorsque je l'execute sous SQL plus, ca me renvoit bien 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Select count(*) Into Var_Cpt_IDMOT from Ipl_Mot I, Mot M Where I.id_ipl_message in (select id_ipl_message from ipl_message where id_sys = 1392) And I.Id_Mot = M.Id_Mot And num_mot||' '||code_proto = 'J28.4I ';
j'ai essayé de mettre des quotes autour du J28.4I pour que ca donne bien 'J28.4I ' mais ca ne change rien....
Voici le code de ma procedure
Code : Sélectionner tout - Visualiser dans une fenêtre à part Var_Mot_Num_Mot_Code_Proto := '''' || Var_Mot_Num_Mot_Code_Proto || '''';
en passant, lorsque je met le code en dur, (donc que ca me renvoit bien 1) le select qui se trouve dans le IF (Var_Cpt_IDMOT>0) n'a pas l'air de s'executer, ou tout du moins, ce qui suit ne s'execute pas, mais je ne me suis pas penché vraiment dessus vu que ce qu'il y a avant ne marche pas vraiment
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 Var_Cpt :=0; Open CMess; Loop Begin Fetch CMess into Var_Message_Id_Message,Var_Message_Num_Message, Var_Message_Emi, Var_Message_Rec, Var_Message_Id_Ipl_Message; Exit when CMess%NOTFOUND; Select Emi_message, Rec_Message into Var_Message_Emi2,Var_Message_Rec2 From Ipl_Message I, Message M Where Id_SYS = Var_sys2 And I.Id_Message = M.Id_Message And Num_Message = Var_Message_Num_Message; insert into ipl_test_2 values(Var_Cpt,Var_Message_Num_Message,'NULL','NULL','NULL', Var_Message_Emi, Var_Message_Rec, Var_Message_Emi2, Var_Message_Rec2,0); Var_Cpt :=Var_Cpt+1; Open CMot; Loop Begin Fetch CMot into Var_Mot_id_Message,Var_Mot_Num_Mot,Var_Mot_Code_proto,Var_Mot_Num_Mot_Code_Proto,Var_Mot_Id_Ipl_Mot,Var_Mot_Id_Mot,Var_Mot_Emission,Var_Mot_Reception; Exit when CMot%NOTFOUND; Var_Mot_Num_Mot_Code_Proto := '''' || Var_Mot_Num_Mot_Code_Proto || ''''; --cette requete qui suit marche pas, ce qui precede marche correctement Select count(*) Into Var_Cpt_IDMOT from Ipl_Mot I, Mot M Where I.id_ipl_message in (select id_ipl_message from ipl_message where id_sys = Var_sys2) And I.Id_Mot = M.Id_Mot And num_mot||' '||code_proto = Var_Mot_Num_Mot_Code_Proto ; Var_Mot_Emission2 :='-'; Var_Mot_Reception2 :='-'; Dbg( 'cpt= ' ||Var_Cpt || ' Var_cpt_IDMOT=' || Var_Cpt_IDMOT || ' codeproto= a' || Var_Mot_Num_Mot_Code_Proto ||'a'); if (Var_Cpt_IDMOT>0) then Dbg( 'plop2'); Select Emi_Mot,Rec_Mot Into Var_Mot_Emission2, Var_Mot_Reception2 From Ipl_Mot I, Mot M Where I.id_ipl_message in (select id_ipl_message from ipl_message where id_sys = :ID_SYS2) And I.Id_Mot = M.Id_Mot And Num_mot||' '||code_proto = Var_Mot_Num_Mot_Code_Proto; Dbg( 'plop3'); end if; If ( Var_Mot_Emission2 is null ) Then Var_Mot_Emission2 := 'TBD'; End If; If ( Var_Mot_Reception2 is null ) Then Var_Mot_Reception2 := 'TBD'; End If; insert into ipl_test_2 values(Var_Cpt,Var_Message_Num_Message,Var_Mot_Num_Mot,'NULL','NULL', Var_Mot_Emission,Var_Mot_Reception, Var_Mot_Emission2, Var_Mot_Reception2,1); Var_Cpt :=Var_Cpt+1; End; End Loop; Close CMot; End; End Loop; Close CMess;
un probleme d'un loop dans un loop (ca serait con, j'en ai encore 2 autres a faire apres ) ??
PS: les cursors et variables sont apparemment definis correctement, donc je ne les ai pas remis.
merci a vous si vous avez une petite idée, car la moi j'en ai plus
PS2: j'hesitais a le mettre dans ce forum ou directement dans PL/SQL, donc excusez moi si je me suis trompé
mike
Partager