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

PL/SQL Oracle Discussion :

Problème de ora ORA-06550


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Par défaut Problème de ora ORA-06550
    bonjour
    j'ai une fonction qui récupère un nom de fonction et selon le nom je fait un appel à cette fonction pour l'exécuter

    Rapport d'erreur :
    ORA-06550: Ligne 1, colonne 12 :
    PLS-00201: l'identificateur 'SC_FAM' doit être déclaré
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    ORA-06512: à "IBANKV3.SCORING", ligne 64
    ORA-06512: à ligne 5
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.
    *Action:
    RQ: SC_FAM nom de la fonction récupéré à partir d'une table et que je veux l'exécuter

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    Si tu nous présentais le code dans lequel tu rencontres ce message, ce serait sans doute plus facile pour y déterminer l'origine de l'erreur
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Par défaut
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    create or replace 
    PACKAGE BODY "SCORING" AS
     
      v_per cm_personne%RowType;
      plsql_block VARCHAR2(100);
      N_ret number;
      C_RET varchar2(100);
      D_RET date;
     
     --FONCTION SCORE par personne    
      Function SCORER_CRITERE_PERSONNE (p_id_per varchar2,p_cod_mod varchar2,p_num_ver number )RETURN number IS 
     
        v_cod_niv varchar2(5);
        v_not_eva number;
        NOT_GLO number:=0;
         SC_FAM varchar2(100);
      SC_AGE_P number;
     
        CURSOR c_cri IS
        SELECT M.COD_CRI,M.POI_CRI,C.NOM_FCT,C.TYP_NIV,C.TYP_ZON
        FROM SC_CRITERE_MODELE M,SC_CRITERE C
        WHERE M.COD_MOD=p_cod_mod and M.NUM_VER=p_num_ver and M.COD_cri = c.cod_cri and M.cod_lan=C.cod_lan ;
       -- DBMS_OUTPUT.PUT_LINE ('  '||M.COD_CRI||M.POI_CRI||C.NOM_FCT||C.TYP_NIV||C.TYP_ZON);
      BEGIN
     
        SELECT * INTO v_per FROM cm_personne WHERE id_per=p_id_per ;
     
     
     
     -- Récupération des citére de scoring pour un modéle et une version
      FOR cri IN c_cri
       LOOP 
         IF cri.TYP_ZON ='N' THEN
           begin
             plsql_block := 'BEGIN '||cri.NOM_FCT||'; END;';
             --plsql_block := 'BEGIN :X:='||cri.NOM_FCT||'; END;';
             EXECUTE IMMEDIATE plsql_block USING OUT N_ret; 
             DBMS_OUTPUT.PUT_LINE (N_ret);
           end;
           begin
             IF  cri.TYP_NIV = 'T' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where cod_cri=cri.COD_CRI and N_ret between to_number(nvl(BOR_INF_EVA,-9999999999999999999)) and to_number(nvl(BOR_SUP_EVA,999999999999999999999));   
              -- Fixe
             elsif  cri.TYP_NIV = 'F' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where N_ret=to_number(val_NIV_FIX) and cod_cri=cri.COD_CRI;
                DBMS_OUTPUT.PUT_LINE (v_cod_niv);
             end if;
             select not_eva into v_not_eva
             from sc_note_critere_modele
             where cod_niv=v_cod_niv and cod_cri=cri.COD_CRI;
              DBMS_OUTPUT.PUT_LINE (v_not_eva);
           exception
              when others then     
                  select nvl(min(not_eva),-99) into v_not_eva
                  from sc_note_critere_modele
                  where cod_cri=cri.COD_CRI;
                  DBMS_OUTPUT.PUT_LINE (v_not_eva);
           end;
           ELSIF cri.TYP_ZON ='C' THEN
           begin
             plsql_block := ('BEGIN :X:='||cri.NOM_FCT||'; END;');
             EXECUTE IMMEDIATE plsql_block USING OUT C_RET;  
             DBMS_OUTPUT.PUT_LINE (C_ret);
           end;
           begin
             IF  cri.TYP_NIV = 'T' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where cod_cri=cri.COD_CRI and C_RET between BOR_INF_EVA and BOR_SUP_EVA;   
              -- Fixe
             elsif  cri.TYP_NIV = 'F' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where C_RET=to_char(val_NIV_FIX) and cod_cri=cri.COD_CRI;
                DBMS_OUTPUT.PUT_LINE (v_cod_niv);
             end if;
             select not_eva into v_not_eva
             from sc_note_critere_modele
             where cod_niv=v_cod_niv and cod_cri=cri.COD_CRI;
             DBMS_OUTPUT.PUT_LINE (v_not_eva);
           exception
              when others then     
                  select nvl(min(not_eva),-99) into v_not_eva
                  from sc_note_critere_modele
                  where cod_cri=cri.COD_CRI;
                  DBMS_OUTPUT.PUT_LINE (v_not_eva);
           end;
           ELSIF cri.TYP_ZON ='D' THEN
           begin
             plsql_block := ('BEGIN :X:='||cri.NOM_FCT||'; END;');
             EXECUTE IMMEDIATE plsql_block USING OUT D_RET;  
           end;
           begin
             IF  cri.TYP_NIV = 'T' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where cod_cri=cri.COD_CRI and D_RET between to_date(nvl(BOR_INF_EVA,-9999999999999999999)) and to_date(nvl(BOR_SUP_EVA,999999999999999999999));   
              -- Fixe
             elsif  cri.TYP_NIV = 'F' then
                select cod_niv into v_cod_niv
                from  sc_niveau_critere
                where D_RET=to_date(val_NIV_FIX) and cod_cri=cri.COD_CRI;
                DBMS_OUTPUT.PUT_LINE (v_cod_niv);
             end if;
             select not_eva into v_not_eva
             from sc_note_critere_modele
             where cod_niv=v_cod_niv and cod_cri=cri.COD_CRI;
             DBMS_OUTPUT.PUT_LINE (v_not_eva);
           exception
              when others then     
                  select nvl(min(not_eva),-99) into v_not_eva
                  from sc_note_critere_modele
                  where cod_cri=cri.COD_CRI;
                  DBMS_OUTPUT.PUT_LINE (v_not_eva);
           end;
     
          end if;
          NOT_GLO:=NOT_GLO+v_not_eva;  
          DBMS_OUTPUT.PUT_LINE ('NOT_GLO');
    END LOOP;
     return NOT_GLO;
    end;      
     
    -- Fonction calcule Age pour une personne physique
    Function SC_AGE_P RETURN number is
     
      v_age_p number;    
      begin
    --v_age_p:= TRUNC(SYSDATE,'yyyy') - TRUNC( v_per.DAT_NAI_PER,'yyyy');
    v_age_p:= months_between(trunc(SYSDATE,'yyyy'), trunc( v_per.DAT_NAI_PER,'yyyy'))/12;
    DBMS_OUTPUT.PUT_LINE ('v_age_p');
    return v_age_p;
    end;
     
    --Fonction calcule Age pour une personne morale
    Function SC_AGE_M RETURN number is
     
      v_age_m number;    
      begin
     
    v_age_m:= to_number(to_char(SYSDATE,'yyyy')) - to_number(to_char( v_per.DAT_ENT_EXP,'yyyy'));
     
     
    return v_age_m;
    end;
    -- Fonction permet de récupérer Etat Civil
      Function SC_FAM RETURN varchar is
     
        v_fam varchar2(30);    
        v_COD_ETA_CIV varchar2(10);
     
        BEGIN
     
        v_COD_ETA_CIV:= v_per.COD_ETA_CIV;
        select LIB_ETA_CIV into v_FAM
        from RF_ETAT_CIVIL 
        where COD_ETA_CIV=v_COD_ETA_CIV and cod_lan='FR';
      DBMS_OUTPUT.PUT_LINE (v_FAM);
      RETURN v_FAM;
    END;
     
     
    END "SCORING";

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Par défaut puls de détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plsql_block := ('BEGIN :X:='||cri.NOM_FCT||'; END;');
    EXECUTE IMMEDIATE plsql_block USING OUT C_RET;

    c'est 2 ligne de codes l'origine de l’erreur car j'ai récupéré le nom de ma fonction 'SC_FAM' à partir d'une table
    et après je veux l'exécuter

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    Ces fonctions que tu appelles dynamiquement, où sont-elles déclarées ? Et comment les appelles-tu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 5
    Par défaut
    elles sont déclarer dans le meme package et elles ont le méme nom qui se trouve dans ma table
    par exemple dana ma table j'ai une fct applé SC_FAM que j'ai déclaré et la dévloppé ds le meme package

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par amalr26 Voir le message
    elles sont déclarer dans le meme package et elles ont le méme nom qui se trouve dans ma table
    par exemple dana ma table j'ai une fct applé SC_FAM que j'ai déclaré et la dévloppé ds le meme package
    Appelez alors la fonction en la précédant du nom de package. Mais j'ai ne vois aucun intérêts pour appeler dynamiquement une fonction que peut être appelé statiquement.

Discussions similaires

  1. Problème oracle - erreur ORA-00022
    Par mika0102 dans le forum Oracle
    Réponses: 3
    Dernier message: 01/12/2009, 11h06
  2. Problème export full [ORA-0155 EXP-00056]
    Par frp31 dans le forum Import/Export
    Réponses: 1
    Dernier message: 02/09/2008, 14h18
  3. Problème d'import ORA-02270
    Par bibi92 dans le forum Import/Export
    Réponses: 3
    Dernier message: 17/07/2008, 15h40
  4. Problème Oracle XE ORA-12560
    Par Fa18Swiss dans le forum Oracle
    Réponses: 6
    Dernier message: 07/04/2008, 14h14
  5. Réponses: 4
    Dernier message: 30/10/2005, 09h13

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