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

Oracle Discussion :

[PL/SQL ] PLS-00123


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [PL/SQL ] PLS-00123
    Bonjour, je travaille sur une base Oracle en 9.2.0.7 via l'éditeur toad, et sur un gros package, composé de 2 proc j'ai l'erreur PLS-00123 qui survient.

    J'ai trouvé ça dans mes recherches :

    The best solution is to modularize the program by defining subprograms, which can be stored in an Oracle database. Another solution is to break the program into two sub-blocks. Have the first block INSERT any data the second block needs into a temporary database table. Then, have the second block SELECT the data from the table.
    Je comprend bien le souci, mais sa résolution doit passer par quoi exactement ?
    Le code est trop long pour le package ou pour les proc qui le compose ?
    Autrement dit, dois-je diviser le code dans le même package ou créer plusieurs package ?

    Toad m'indique environ 2700 lignes de code mais j'imagine que le nombre de ligne n'est pas le paramètre important mais plutôt le nombre de caractères...?

    Cette limite ne peut pas être modifiée ?

    Merci aux courageux qui me répondront, à la veille de Noël !

  2. #2
    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
    Il me semble avoir lu quelque part sur le metalink qu'il y a avait un bug avec cette erreur sous Oracle 9.2.0.7. Je n'ai pas le temps de retrouver le document mais si tu accès au metalink, tu devrais trouver l'info

    Sinon essaie de créer 2 packages avec chacun une procédure pour voir si tu as toujours l'erreur.

  3. #3
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Program too large?

    Ce n'est pas un bug, c'est une limitation documentee, limitation qui a ete repoussee de release en release.

    La limitation n'est pas en nombre de lignes ou de caracteres, elle est en nombre d'elements qui resultent du parsing du package.

    D'hors et deja, la limite est tellement haute que toute compilation, en version 9 et au dela, qui plante en PLS-0123, signifie de facon certaine que le module n'est pas assez structure.

    Un bon developpement en PL/SQL (cad maintenable) requiert le developpement de procedures et functions dont la longueur n'excede pas deux pages, facilite la reutilisation et le developpement en parallel. Creer un ou plusieurs packages par entite, avec une methode structuree, est une pratique courante.

  4. #4
    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
    Citation Envoyé par plabrevo
    Ce n'est pas un bug, c'est une limitation documentee, limitation qui a ete repoussee de release en release.
    Si il y a bien un bug en 9.2.0.7 : cf. sur le metalink la Note:308895.1

  5. #5
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Le bug en question existe potentiellement sur toutes les releases de 8.1 a 10.2.0 inclus, dans des cas tres particuliers de contenu du package. La probabilite que ce soit le meme probleme est tres tres faible.

    En regle generale, PLS-0123, dans un contexte decrit de "gros package", signifie que la structure du module est a revoir.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour ces infos !
    Je n'ai pas suivi de très près ce post (vacances obligent...) mais je m'y remet avec courage !

    Bonne année à tous en tout cas !


    Concernant mon souci, j'ai bien compris ce qu'explique plabevro concernant la structure du package et le nombre d'éléments qui résultent du parsing ; mais dans le cas présent, le package ne contient QUE du code dynamique pratiquement.

    Cet énorme package construit une requete dynamique et l'exécute ensuite.
    La requete générée est longue (puisque'il faut parfois jusqu'à 4 variables long pour la mémoriser) mais c'est au moment de la compilation que cela plante. Or le sql dynamique n'est pas parsé ? (ou je m'y perd...!)

    J'ai du mal à trouver les cas très particuliers dont parle plabevro, pourrais-je avoir plus d'infos sur ces cas ?

    Sur metalink, les infos que je trouve ne m'apprennent pas grand chose !
    Aurais-je raté une note importante plaineR ?

    Merci !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut [RESOLU]
    La solution consistait simplement à scinder les ps du package.
    Avec 3 PS au lieu de 2 l'erreur ne survient plus !

    Le corps du package est toujours aussi long. La limite est bel et bien en nombre de caractères (or commentaires) par procédure.

    Le package "pèse" plus de 200 Ko (avec les commentaires) . La limite des 64 Ko s'applique peut-être sur les ps du package...?

    Merci à ceux qui ont usés leurs neurones pour moi !

  8. #8
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Le bug cite par la note metalink 308895.1 est le bug4463574 qui est une regression introduite en 9.2.0.7 par le fix du bug3768052. Pour etre certain qu'il s'agit ou nom du meme probleme, ce fix peut etre desactive par le positionnement de l'event 10946 au niveau 128.

    Sinon, les infos concernant les limites des packages sont publiees dans la note metalink 62603.1. La limite publiee du compilateur en version 9.2 est 256M d'elements.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PLS-00103 erreur incomprise sur PL/SQL developer
    Par balkis dans le forum PL/SQL
    Réponses: 5
    Dernier message: 01/09/2010, 17h03
  2. Erreur pl/sql PLS-00103
    Par redabadache3 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 31/10/2007, 13h31
  3. ERREUR PLS-00123: program too large
    Par amigauss dans le forum SQL
    Réponses: 13
    Dernier message: 06/07/2007, 20h05
  4. [PL/SQL] Erreur PLS-00103 dans un trigger
    Par sami.g dans le forum Oracle
    Réponses: 1
    Dernier message: 18/12/2006, 18h57
  5. [Pl/Sql] PLS-00103 triggers
    Par madimane dans le forum Oracle
    Réponses: 2
    Dernier message: 14/03/2006, 08h11

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