Bonjour à tous.

J'ai un soucis avec une PL/SQL qui fait tourner un SELECT, voici le code de la PL :

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
PROCEDURE P_UPDATE_FLOW(P_MTH_REF Number,P_FILE_NAME CHAR, P_STATUS CHAR, P_STAT out Number) is
 
--==============================================================================================
-- Objectif : Cette procédure met à jour le statut d'un fichier
-- Tables en Entrée  :	Aucune
-- Tables en Sortie  :  Aucune
-- Param Entrée      :
   -- P_MTH_REF : Mois de la mise en production de la forme 200302
   -- P_FILE_NAME : Nom du fichier
-- Param Sortie      :	P_STAT
   -- Valeurs de retour possibles :
   	  		  -- 0 ==> fichier pas encore chargé pour le mois courant
			  -- 1 ==> fichier déjà traité
-- cree le 16/09/2008		par MPC
--==============================================================================================
 
 
------------------------------------------------------------------------------
-- Declaration de variables
------------------------------------------------------------------------------
-- Nom de Procedure
T_STATUS		    varchar2(1);
-- Nom de Procedure
T_NOM_PROC			varchar2(50);
-- Message de fin de traitement
T_MSG				varchar2(2000);
--Type de processus
T_TYP_PROCESS Varchar2(20);
 
Procedure P_CALL_LOG_DET Is
Begin
-- ===================================
--	Log erreur de traitement
-- ===================================
  PCK_LGD_UTILS.P_LOG_DET
  (
    T_NOM_PROC			  ,
    T_TYP_PROCESS,
    SQLCODE,
	T_MSG,
    To_Char(P_MTH_REF),
    0
  );
End;
------------------------------------------------------------------------------
-- Debut de Traitement
------------------------------------------------------------------------------
BEGIN
 
DBMS_OUTPUT.PUT_LINE('début');
--Initialisation de variables de log
  T_NOM_PROC:='P_UPDATE_FLOW';
  T_TYP_PROCESS:=PCK_LGD_PARAMS.ADM;
  DBMS_OUTPUT.PUT_LINE('query is :');
  DBMS_OUTPUT.PUT_LINE(P_MTH_REF||' and '||P_FILE_NAME);
 
  SELECT STATUS INTO T_STATUS
  FROM LGD_GUI_LOAD
  WHERE
	FILE_NAME = P_FILE_NAME ;
 
		DBMS_OUTPUT.PUT_LINE('test du status');
	if (T_STATUS = 'I') then
	   	UPDATE LGD_GUI_LOAD
  		SET STATUS = P_STATUS, LOAD_DATE=SYSDATE
  		WHERE MTH_REF = P_MTH_REF AND FILE_NAME = P_FILE_NAME ;
		DBMS_OUTPUT.PUT_LINE('MAJ date');
	else
		UPDATE LGD_GUI_LOAD
  		SET STATUS = P_STATUS
  		WHERE MTH_REF = P_MTH_REF AND FILE_NAME = P_FILE_NAME ;
		DBMS_OUTPUT.PUT_LINE('pas de MAJ date');
	end if;
 
		DBMS_OUTPUT.PUT_LINE('fin');
 
-------------------------------------------------------------------------------------------------------
-- Insertion de la ligne
-------------------------------------------------------------------------------------------------------
 
 
 
  COMMIT;
 
  P_STAT := 1 ;
		DBMS_OUTPUT.PUT_LINE('fin');
 
EXCEPTION
 
	WHEN Others then
	begin
		rollback;
		P_STAT:=0;
		T_MSG:=T_MSG||' '||SqlErrm(SqlCode);
		P_CALL_LOG_DET;
	end;
------------------------------------------------------------------------------
--	Fin de procedure
------------------------------------------------------------------------------
end P_UPDATE_FLOW;
Quand je la teste, il ne rentre pas dans le test IF (l'affichage ne fait pas).
Si je gère l'exception NO_DATA_FOUND, il renvoie bien l'erreur NO_DATA_FOUND alors que si je teste le SELECT à la mano cela retourne un résultat.

La table est bien renseigné.

Merci d'avance, je désespère là...