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

  1. #1
    Membre du Club 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
    Points : 54
    Points
    54
    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 actif
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Points : 202
    Points
    202
    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
    Points : 4 926
    Points
    4 926
    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
    Points : 3 597
    Points
    3 597
    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 actif
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Points : 202
    Points
    202
    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
    Points : 4 926
    Points
    4 926
    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 actif
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Points : 202
    Points
    202
    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 éminent

    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
    Points : 7 740
    Points
    7 740
    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

  9. #9
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    ouais, la solution avec une table temporaire n'a vraiment rien à voir avec PL/SQL. Je vais le mentionner dans le forums de feedback de documentation Oracle.

  10. #10
    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 que je comprends c'est que les données qui sont insérés dans le premier bloc PL sont pour être réutilisées dans le second, c'est une méthode pour communiquer des variables entre les 2.

  11. #11
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par McM
    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
    il s'agit de la taille compilée. Suivant le code source, le code compilé sera plus ou moins long, la note 62603.1 mentionne la vue user_object_size et la colonne parsed_size

  12. #12
    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
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par plaineR
    Ce que je comprends c'est que les données qui sont insérés dans le premier bloc PL sont pour être réutilisées dans le second, c'est une méthode pour communiquer des variables entre les 2.
    ok, merci

  13. #13
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    La note Metakink est publiée sur AskTom (version an 2000).

  14. #14
    Membre du Club 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
    Points : 54
    Points
    54
    Par défaut
    Merci tout le monde pour vos réponses
    et je suis desolé pour le retard
    Ce probleme est resolu, juste en compilant le package avec un autre editeur.

    Au début je le compilais avec SQLNav qui donne l'erreur, puis je l'ai compilé avec SQLPlus et ça marche.

    Peut etre c'est un probleme d'editeur ???!!!!
    j'ai rien compri, mais en tt cas le probleme est résolu


    Merci

+ 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