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

Administration Oracle Discussion :

Procédure non reconnue comme declarée


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut Procédure non reconnue comme declarée
    Bonjour,
    J'exécute le script suivant (extrait d'un script plus complet) qui contient deux procédures déclarées en même temps de la même manière. Cependant, l'une des procédures est correctement exécutée et pas l'autre. J'ai le message suivant :
    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
    [oracle@linux ~]$ sqlplus 'ops$ope'/opeope00@ACE2011B
     
    SQL*Plus: Release 10.2.0.1.0 - Production on Tue Apr 17 18:03:31 2012
     
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     
     
    Connected to:
    Oracle Database 10g Release 10.2.0.1.0 - Production
     
    SQL> create or replace procedure dropsynonym(synonym varchar2) as
      2     cursor1 integer;
      3  begin
      4     cursor1:=dbms_sql.open_cursor;
      5     dbms_sql.parse(cursor1,'DROP SYNONYM ' || synonym,dbms_sql.NATIVE);
      6     dbms_sql.close_cursor(cursor1);
      7  EXCEPTION WHEN OTHERS THEN
      8     dbms_output.put_line(sqlerrm);
      9     if dbms_sql.is_open(cursor1) then
     10        dbms_sql.close_cursor(cursor1);
     11     end if;
     12  end;
     13  /
     
    Procedure created.
     
    SQL> grant execute on dropsynonym to public;
     
    Grant succeeded.
     
    SQL> create or replace procedure dropsynonymp(synonym varchar2) as
      2     cursor1 integer;
      3  begin
      4     cursor1:=dbms_sql.open_cursor;
      5     dbms_sql.parse(cursor1,'DROP PUBLIC SYNONYM ' || synonym,dbms_sql.NATIVE);
      6     dbms_sql.close_cursor(cursor1);
      7  EXCEPTION WHEN OTHERS THEN
      8     dbms_output.put_line(sqlerrm);
      9     if dbms_sql.is_open(cursor1) then
     10        dbms_sql.close_cursor(cursor1);
     11     end if;
     12  end;
     13  /
    grant execute on dropsynonymp to public;
     
    Procedure created.
     
    SQL> 
    Grant succeeded.
     
    SQL> connect IPAS1/ipas0@ACE2010A
    Connected.
    SQL> execute dropsynonym('EXERCISE_FLIGHT');
     
    PL/SQL procedure successfully completed.
     
    SQL> execute dropsynonymp('EXERCISE_FLIGHT');
    BEGIN dropsynonymp('EXERCISE_FLIGHT'); END;
     
          *
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00201: identifier 'DROPSYNONYMP' must be declared
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
     
     
    SQL>
    Voici mon script en question :
    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
    create or replace procedure dropsynonym(synonym varchar2) as
       cursor1 integer;
    begin
       cursor1:=dbms_sql.open_cursor;
       dbms_sql.parse(cursor1,'DROP SYNONYM ' || synonym,dbms_sql.NATIVE);
       dbms_sql.close_cursor(cursor1);
    EXCEPTION WHEN OTHERS THEN
       dbms_output.put_line(sqlerrm);
       if dbms_sql.is_open(cursor1) then
          dbms_sql.close_cursor(cursor1);
       end if;
    end;
    /
    grant execute on dropsynonym to public;
     
    create or replace procedure dropsynonymp(synonym varchar2) as
       cursor1 integer;
    begin
       cursor1:=dbms_sql.open_cursor;
       dbms_sql.parse(cursor1,'DROP PUBLIC SYNONYM ' || synonym,dbms_sql.NATIVE);
       dbms_sql.close_cursor(cursor1);
    EXCEPTION WHEN OTHERS THEN
       dbms_output.put_line(sqlerrm);
       if dbms_sql.is_open(cursor1) then
          dbms_sql.close_cursor(cursor1);
       end if;
    end;
    /
    grant execute on dropsynonymp to public;
     
    connect IPAS1/ipas0@ACE2010A
    execute dropsynonym('EXERCISE_FLIGHT');
    execute dropsynonymp('EXERCISE_FLIGHT');
    Si je déclare la procédure dans la session IPAS1, elle va évidemment marcher.
    Je ne vois pas ou j'ai pu faire une erreur : si il y avait une erreur, les deux procédures devraient être en échec (!).
    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Par défaut
    Bonjour,

    N'auriez vous pas un synonyme pointant sur dropsynonym ?

    Que ce passe-t-il si vous exécutez la seconde procédure de la façon suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute ops$ope.dropsynonymp('EXERCISE_FLIGHT');

  3. #3
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    Bonjour,
    Je suis en congés pendant une semaine, je fais le test dès que possible.
    Merci

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/03/2011, 17h40
  2. [Debutant]Fonction non reconnue comme telle
    Par obito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/05/2010, 17h15
  3. Header non reconnu comme apparenant à ma classe
    Par _gargamel_ dans le forum C++
    Réponses: 1
    Dernier message: 11/08/2007, 00h44
  4. PoupTrigger non reconnue comme popuTriger
    Par Djobird dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/07/2007, 12h16
  5. [ORA-06576]procédures non reconnues
    Par critok dans le forum Oracle
    Réponses: 12
    Dernier message: 21/12/2005, 13h56

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