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

SQL Oracle Discussion :

ORA-06502 parametre de sortie pose probleme


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut ORA-06502 parametre de sortie pose probleme
    bonjour !

    J'appele une procedure dans un package qui a un parametre de sorti en varchar2.
    Apparement quand la variable depasse une certaine taille, une erreur -06502 est levé.
    Pourtant le champs qui remplie ma variable est un varchar2(40) ce qui ne me semble pas enorme.

    Ma base est une 8.1.7 et j'appele l'appli via le web.

    J'ai vu une histoire de buffer string trop petit sur internet mais je ne sais pas ce que c'est.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,
    Peux tu donner ton code
    merci

    Jaouad

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Avec grand plaisir

    voici le code de la procedure appelante(résumé):

    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
    Procedure appelante(
        wmsgres out varchar2,
        type_origine  in varchar2,
        code_origine  in varchar2
    )is
        wcndct table.champ%type;
     
     
    begin
      wcndct := '';
     
        package.procedure(
            wMsgRes ,
            type_origine ,
            code_origine ,
            wcndct,
            libelle_groupe_oper ,
            libelle_bat_esc ,
            libelle_rue ,
            code_postal ,
            ville );
    et celle de la procedure appelée (résumée aussi):
    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
     
      Procedure appelée(
              wMsgRes OUT VARCHAR2,
              type_origine in varchar2,
              code_origine in varchar2,
              v_cndct in out long,
              libelle_groupe_oper   in out varchar2,
              libelle_bat_esc       in out varchar2,
              libelle_rue           in out varchar2,
              code_postal           in out varchar2,
              ville                 in out varchar2
      ) is
     
     
       BEGIN
     
          begin
          select C.cndct
          into wcndct
          from table C
          where C.cnct		= code_origine
          and   C.ctct		= type_origine ;
          exception when others then
          	wmsgres := 'ProblÞme de rÚcupÚration intitulÚ !' ;
               goto BeforeExit;
     
          end ;
    le wcndct est en long mais j'ai aussi essayé en varchar2, en table.champs%type mais rien n'y a fait ...

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    ah oui ...

    dans ce cas l'erreur est catchée mais si je demande le SQLCODE de l'erreur elle me ramene ORA-06502

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    il me faudrait l'erreur lors de l'éxècution


    Merci

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    C'est très résumé, il manque la déclaration de la moitié des variables out

    Et si tu déclares ta variables wcndct en long, cela donne quoi ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    EXCEPTION
        WHEN OTHERS THEN
            lnbErrNum := SQLCODE;
            lErrMsg := SQLCODE||SUBSTR(SQLERRM, 1, 150);
             wMsgRes := lErrMsg;
    j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Une erreur :
    -6502: ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
    est survenue dans le traitement de l'erreur
    -6502ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    même probleme avec variable en long

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Quelle est la longueur du champ que tu ramènes dans ton select ?

    Pour info, long en pl/sql est limité à 32760 caractères alors qu'en base il peut contenir des chaînes de 2 Go.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    varchar2(40)

  11. #11
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    ou as-tu ajouter ton exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXCEPTION 
        WHEN OTHERS THEN 
            lnbErrNum := SQLCODE; 
            lErrMsg := SQLCODE||SUBSTR(SQLERRM, 1, 150); 
             wMsgRes := lErrMsg;
    :

    Juste apres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package.procedure( 
            wMsgRes , 
            type_origine , 
            code_origine , 
            wcndct, 
            libelle_groupe_oper , 
            libelle_bat_esc , 
            libelle_rue , 
            code_postal , 
            ville );
    :
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    non je l'ai mise dans la procedure appelée

  13. #13
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut


    je pense que la bonne voie est celle du tampon de chaîne trop petit.
    si quelqu'un sait ce que c'est ?

  14. #14
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Ca veut dire que tu essaies de mettre une chaine de caractères trop longue dans ta variable déclarée
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    declare
      v_ch varchar2(1),
    begin
      v_ch := 'oui';
    end;
    /
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  15. #15
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Je ne suis pas sûr que cela vienne uniquement de wcndct, regarde également la longueur maxi de tes autres variables out, et plus particulièrement de wMsgRes
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  16. #16
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    euh oui je veux bien mais ma variable est declaré de cette sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    variable table.champ%type;
    puis je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select champ from table into variable;
    j'ai essayé en déclarant ma variable en varchar2(40) et en long

    rien n'y a fait

  17. #17
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    non ca vient de wcndct

    j'excute mon code sans lui ca marche
    avec lui ca ne marche pas

    ca ne vient pas de wmsgres pour des tonnes de raisons je n'ai aucun doute là dessus

  18. #18
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Que te ramène ta requête sous SQL*Plus
    select C.cndct
    from table C
    where C.cnct = code_origine
    and C.ctct = type_origine ;
    - pour un code et un type pour lesquels l'erreur se déclenche ?
    - pour un code et un type pour lesquels l'erreur ne se déclenche pas ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  19. #19
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Ce qui me semble bizarre, c'est :
    Une erreur : -6502: ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
    est survenue dans le traitement de l'erreur ...
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  20. #20
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    pour le traitement de l'erreur je crois que je sais ce que c'est ...
    à force de tout tester je code comme un goré et du coup mon package de gestion d'erreur n'apprécie pas trop...

    mais je n'avais pas remarqué. Mais cela implique que l'erreur qui me gene est la deuxieme.

    la requete sous sql plus marche à tout les coups.

    elle me plante dans le package apparement quand le champ dépasse une certaine taille.

Discussions similaires

  1. Fermeture de socket me pose problème !
    Par MonsieurAk dans le forum Réseau
    Réponses: 2
    Dernier message: 15/05/2006, 23h03
  2. Réponses: 3
    Dernier message: 14/04/2006, 12h54
  3. Retourner un paramètre en sortie d'un executable pour un Bat
    Par Laurent GAUDILLIER dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2006, 23h49
  4. récupération de parametres en sortie d'une SP
    Par jbat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/04/2005, 08h41
  5. ORA-06502 sur un delete
    Par DBS dans le forum Oracle
    Réponses: 61
    Dernier message: 01/04/2005, 16h01

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