IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Exception ORA-06502 avec owa.cookie


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Flutter/java/windev/php/javascript
    Inscrit en
    Octobre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flutter/java/windev/php/javascript
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 87
    Par défaut Exception ORA-06502 avec owa.cookie
    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;

  2. #2
    Membre confirmé
    Homme Profil pro
    Flutter/java/windev/php/javascript
    Inscrit en
    Octobre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Flutter/java/windev/php/javascript
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 87
    Par défaut
    bon, j'ai modifié mon message un peu vite... il faut attendre un peu qu'oracle lance les services nécessaires je pense, en tout cas maintenant ça fonctionne en pl/sql

    par contre en java j’obtiens l'erreur précédemment cité...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CallableStatement rs;
            rs = getOracle().callFunction("CentralBel.sessionpk.check_login", args, Types.NUMERIC);
    acdb contient la methode:
    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
    public synchronized CallableStatement callFunction(String proc,String[] args, Integer type) throws SQLException{
            String query = "{? = call "+proc+"(";
            if(args != null)
                for(String arg : args){
                    if(query.lastIndexOf("?")!=query.length()-1)
                        query += "?";
                    else
                        query += ",?";
                }
            query += ")}";
            CallableStatement stmt = con.prepareCall(query);
            stmt.registerOutParameter(1, type);
            int ind = 2;
            for(String arg : args){
                stmt.setString(ind, arg);
                ind++;
            }
            stmt.execute();
     
            System.out.println("CallFunc realise");
            return stmt;
        }
    la méthode est bien trouvée à la vue du rapport d'erreur, mais pourquoi ai-je une erreur alors qu'en pl/sql je n'en est pas?

    ps: j’utilise Firefox et j'autorise les cookies (pour l'occasion...). j'ai aussi essayé avec google chrome mais idem.

Discussions similaires

  1. erreur ORA-06502 avec UTL_FILE
    Par leftyy dans le forum PL/SQL
    Réponses: 1
    Dernier message: 03/11/2010, 17h14
  2. Exception ORA:12154 avec TOAD
    Par maniravitch dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 17/12/2008, 15h26
  3. [Forms 10g] ora-06502 avec le package dbms_lob
    Par salim11 dans le forum Forms
    Réponses: 2
    Dernier message: 23/01/2007, 19h40
  4. ORA-01033 avec base démarrée correctement
    Par Yorglaa dans le forum Administration
    Réponses: 17
    Dernier message: 12/05/2004, 09h51
  5. Exception 'instruction privilégiée' avec TDLPort
    Par jphi5 dans le forum C++Builder
    Réponses: 21
    Dernier message: 11/11/2003, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo