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 :

ERREUR PLS-00123: program too large


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de amigauss
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 119
    Par défaut ERREUR PLS-00123: program too large
    Bonjour

    je travail sur orcale 9i, et quand je compile un package ça me donne l'erreur suivante : PLS-00123: program too large

    la package contient 3503 lignes, et je peux supprimer aucune ligne.

    d'où vient cette erreur ? et comment je peux la resoudre

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    PLS-00123: program too large

    Cause: PL/SQL was designed primarily for robust transaction processing. One consequence of the special-purpose design is that the PL/SQL compiler imposes a limit on block size. The limit depends on the mix of statements in the PL/SQL block. Blocks that exceed the limit cause this error.

    Action: 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.

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par davy.g
    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.
    Comment ça?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Comme ça ? d'après la structure d'un bloc PL/SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BEGIN
    <INSERT ....>
    END;
    BEGIN
    <SELECT ...>
    END;

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Oui, je pense que c'est cela !

    Mais vous savez je ne fais que citer la doc Oracle concernant ce message d'erreur.
    Je pense que tu pourras nous éclairer sur ce sujet Laurent...

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    je ne vois pas vraiment le rapport entre INSERT, SELECT, TEMPORARY TABLE et PLS-00123:program too large.

    Comment faire si le programme ne contient pas d'insert?

    Je veux bien comprendre que un package P qui contient 100 procédures peut être réécrit en 10 packages P1,P2,P3... qui contiennent chacun 10 procédure, mais le truc du INSERT, ça me semble un peu douteux et surtout, ça n'a rien à voir avec INSERT, ni avec SELECT, ni avec TABLE, car tu peux tout aussi bien séparer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BEGIN 
    dbms_output.put_line('hello');
    dbms_output.put_line('world');
    END;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BEGIN 
    dbms_output.put_line('hello');
    END;
    BEGIN
    dbms_output.put_line('world');
    END;

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Même si le programme ne contient pas d'INSERT, je pense que comme le dit la doc, il faut découper son code PL/SQL en plusieurs blocs PL.
    Il aurait été judicieux de savoir si le code PL/SQL qui cause soucis fait partie d'un seul bloc ou non...

    Ils ont peut-être voulu donner un exemple dans la doc mais visiblement ils n'ont pas été assez précis je pense...

  8. #8
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    J'ai déjà compilé des packages de 200 Ko sur des 9i (5600 lignes commentaires compris) sans erreur.
    J'ai pas tout compris à cette histoire de blocks puis de limite
    The limit depends on the mix of statements in the PL/SQL block

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

Discussions similaires

  1. Régler le problème de l'erreur 414 Request-URI too large
    Par leaderchips dans le forum Apache
    Réponses: 3
    Dernier message: 24/06/2011, 16h23
  2. Erreur: Texture data too large for graphics device
    Par j_ere_my dans le forum Images
    Réponses: 2
    Dernier message: 31/03/2010, 12h36
  3. [TPW][Débutant] Erreur "Data segment too large"
    Par dimi2 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 08/04/2008, 20h35
  4. Erreur de "Procedure too large"
    Par Tintou dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/05/2007, 08h37
  5. Erreur 49 : data segment too large
    Par E-branly dans le forum Pascal
    Réponses: 10
    Dernier message: 09/02/2007, 12h57

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