Bonjour, j'ai un petit soucis depuis plusieurs jours lors de l’utilisation de la librairie owa.cookie (fonction get)

j'ai créé une gestion des session en pl/sql comme suit:

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
create or replace package SessionPK as
	session_duration constant number := 120; -- minutes(2h)
 
	function is_logged return number;
	function check_login (p_login in client.Login%type, p_password in client.Pass%type) return number;
	procedure get_user(p_lastname out personne.nom%type, p_firstname out personne.prenom%type);
	procedure logout;
 
end SessionPK;
/
 
create or replace
package body SessionPK as
	function get_session_id return varchar2 is
		session_cookie   owa_cookie.cookie;
		session_id       varchar2 (32);
		last             date;
	begin
		session_cookie := owa_cookie.get ('sessionid');
 
		if session_cookie.num_vals = 0 then
		   return null;
		end if;
 
		session_id := session_cookie.vals (session_cookie.vals.first);
 
		begin
		   select sessions.last into last from sessions where sessions.id_session = session_id;
			exception
				when no_data_found then
					owa_cookie.remove ('sessionid', session_id);
			return null;
		end;
 
		if sysdate > last + SessionPK.session_duration / 1440 then
			owa_cookie.remove ('session_id', session_id);
			delete from sessions where id_session = session_id;
			commit;
			return null;
		end if;
 
		update sessions set last = sysdate where id_session = session_id;
		return session_id;
    /*exception
      when others then
        centrale.ajoutLog('SessionPK.get_session_id',SQLCODE,SQLERRM);*/
	end get_session_id;
 
 
 
 
	function check_login (p_login in client.Login%type, p_password in client.Pass%type) return number is
		v_session_id      varchar2 (32);
		v_client_id       client.id_client%type;
	begin
    v_session_id := get_session_id;
		if v_session_id is not null then
			centrale.ajoutLog('sessionPK.check_login',SQLCODE,SQLERRM,'Client deja connecté');
      return 0;
		end if;
 
		begin
			select id_client into v_client_id from client where login like p_login and pass like p_password;
		exception when no_data_found then
			return 0;
		end;
 
		select sys_guid () into v_session_id from dual;
 
		owa_cookie.send ('sessionid', v_session_id, sysdate + 30 / 1440);
 
		insert into sessions values (v_session_id, v_client_id, sysdate);
		commit;
		return 1;
	end check_login;
 
 
 
	...
 
end SessionPK;
j'ai essayé à partir de sqldev de tester ma fonction et j'obtiens:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
declare
		rep numeric;
begin
    rep := sessionpk.check_login('login','pass');
    if(rep = 1) then dbms_output.put_line('login: true');
    else dbms_output.put_line('login: false'); end if;
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Rapport d'erreur :
ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur
ORA-06512: à "SYS.OWA_UTIL", ligne 354
ORA-06512: à "SYS.OWA_COOKIE", ligne 67
ORA-06512: à "SYS.OWA_COOKIE", ligne 183
ORA-06512: à "CENTRALBEL.SESSIONPK", ligne 7
ORA-06512: à "CENTRALBEL.SESSIONPK", ligne 57
ORA-06512: à ligne 4
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    
*Action:
or hier, le même appel à la même fonction retournait une valeur correcte (en pl/sql mais pas depuis un appel java)
j'en avais pour preuve des ajouts correct dans une table de ma base avec l'id du cookie...

appel sql:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 declare
rep number;
begin
rep := sessionpk.check_login('login','pass');
end;