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 :

Pb Oracle: ORA-06508


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut Pb Oracle: ORA-06508
    Bonjour,

    Dans un trigger, je fais appel à des variables globales contenues dans un package, le problème c'est qu'aux moment où je veux les utiliser ( w_var := PACK_GLOBAL.VAR_1 ou PACK_GLOBAL.VAR_1 := w_var)
    j'ai l'erreur "ORA-06508 : PL/SQL: could not find program unit being called" qui monte. Je ne sais pas trop d'ou çà peut venir d'autant que j'ai fais tout le necessaire pour faire en sorte que çà marche (création de synonymes, de grant...)

    Je vous remercie bcp pour votre aide.

    Cordialement, mehdi.

  2. #2
    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
    ORA-06508: PL/SQL: could not find program unit being called
    Cause: An attempt was made to call a stored program that could not be found. The program may have been dropped or incompatibly modified, or have compiled with errors.
    Action: Check that all referenced programs, including their package bodies, exist and are compatible.
    Vérifiez que tous vos packages body sont valides avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> select object_name, status from all_objects where object_type = 'PACKAGE BODY';
    Et assurez-vous aussi que vous ne compilez pas le package alors qu'il est en train d'être exécuté par quelqu'un d'autre.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Rebonjour,

    En fait je n'ai pas de package body pour celui-ci,
    je n'ai qu'une déclaration du package avec les variables globales:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE OR REPLACE PACKAGE PACK_GLOBAL IS
           MOD VARCHAR2(16) default 'vide';
           PORT VARCHAR2(24) default 'vide';
           [...]
    END PACK_GLOBAL;
    La compilation se passe bien, et j'ai vérifié les droits et synonyms pour tous les utilisateurs.
    Après dans un trigger je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PACK_GLOBAL.MOD := :NEW.MOD;
    j'ai géré les exceptions grâce à UTL_FILE avec lequel j'écris dans un fichier 'suivi.log' les éventuelles erreurs et c'est là qu'il m'écrit dans ce fichier:
    ORA-06508: PL/SQL: could not find program unit being called

    En fait il s'agit de placer la valeur de :NEW.MOD dans PACK_GLOBAL.MOD pour pouvoir ensuite la récupérer dans un autre trigger juste après, peut-être qu'il y a une solution plus appropriée.

    Cordialement,

    Mehdi.

  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
    Ca devrait fonctionner en effet. Etes-vous absolument sûr de la ligne qui déclenche l'erreur ? Est-ce que vous pouvez donner un scénario complet qui permet de reproduire le problème ?

    Le scénario suivant prouve que votre approche doit marcher:

    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
     
    SQL> 
    SQL> create or replace package pg is
      2       mod varchar2(16) default 'vide';
      3       port varchar2(24) default 'vide';
      4  end pg;
      5  /
    Package created.
    SQL> show errors
    No errors.
    SQL> 
    SQL> declare vc VARCHAR2(50);
      2  begin
      3  pg.mod := 'ok';
      4  vc := pg.mod;
      5  vc := pg.port;
      6  end;
      7  /
    PL/SQL procedure successfully completed.
    SQL> show errors
    No errors.
    SQL> /
    PL/SQL procedure successfully completed.
    SQL> 
    SQL> 
    SQL> drop table tg;
    Table dropped.
    SQL> 
    SQL> create table tg (x int);
    Table created.
    SQL> 
    SQL> create or replace trigger ttg
      2  after insert on tg
      3  for each row
      4  begin
      5  pg.mod := :new.x;
      6  end;
      7  /
    Trigger created.
    SQL> show errors
    No errors.
    SQL> 
    SQL> insert into tg values (10);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> 
    SQL> set serveroutput on
    SQL> begin
      2  dbms_output.put_line('pg.mod=' || pg.mod);
      3  end;
      4  /
    pg.mod=10                                                                       
    PL/SQL procedure successfully completed.
    SQL> show errors
    No errors.
    SQL> 
    SQL> exit

Discussions similaires

  1. [Oracle] ORA-00979 et Group By
    Par madtroll dans le forum Oracle
    Réponses: 3
    Dernier message: 27/07/2006, 20h17
  2. Oracle ora-04091 mutating table
    Par hottnikks_79 dans le forum Oracle
    Réponses: 1
    Dernier message: 19/05/2006, 19h34
  3. [C#][Oracle] ORA-00020 -> Nb max de process atteind
    Par gael.mases dans le forum Accès aux données
    Réponses: 5
    Dernier message: 01/12/2005, 08h47
  4. Erreur Oracle ORA-30036
    Par lapartdombre dans le forum Oracle
    Réponses: 5
    Dernier message: 04/11/2005, 15h37
  5. Oracle ORA-00020 : maximum de processus
    Par Lisou dans le forum Administration
    Réponses: 5
    Dernier message: 22/03/2004, 16h27

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