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 :

Erreur PLS-00201 pour fonction dbms_system.get_env


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut Erreur PLS-00201 pour fonction dbms_system.get_env
    Bonjour,
    tout est dit dans le titre de la discussion : à l'exécution de la fonction dbms_system.get_env pour récupérer une variable d'environnement, j'ai le message d'erreur PLS-00201.
    Je suis pourtant en version 10g d'Oracle. Que faut-il ajouter pour que cela fonctionne ?

    Merci d'avance,
    Cordialement.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par frglyon Voir le message
    Que faut-il ajouter pour que cela fonctionne ?
    Votre code exact serait un bon début.

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut
    Il est vrai que c'est plus facile avec le code .. ci-dessous :

    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
    SET TERMOUT ON
    --set serveroutput on
     
    CREATE OR REPLACE function xb_disable_constraints 
                ( table_dis in VARCHAR2
                ) return number is 
      Result number;
      code_appli   varchar2(02) := 'XB';            --Code application
      suffixe_temp varchar2(04) := '_TMP';          --Suffixe des synonyms temporaires
      suffixe_pk   varchar2(03) := '_PK';           --Suffixe des contraintes PK
      table_phys   varchar2(30) := '';              --Table physique rattachée au synonyme
      var_env      varchar2(10) := '';              --Variable environnement
      cursor c_table_key is
       select table_name 
         from all_synonyms
        where synonym_name = table_dis || suffixe_temp;
      cursor c_foreign_key is
       select uc.table_name, uc.constraint_name
         from user_constraints uc
        where uc.r_constraint_name = table_phys || suffixe_pk 
          and constraint_type in ('R');
    begin
    DBMS_OUTPUT.ENABLE( 1000000 ) ;
        Result := 0;
        /*
          Logique : Pour chaque table ayant un synonyme _TMP de créé : désactivation de toutes les clés étrangères
        */
        --1) Récupération de la table physique en fonction du synonyme 
    dbms_output.put_line('table logique  : ' || table_dis);
        Open c_table_key;
        Fetch c_table_key into table_phys;
        Close c_table_key;
    dbms_output.put_line('table physique : ' || table_phys);
     
        --2) Désactivation des clés étrangères
        for r_foreign_key in c_foreign_key loop
    	    begin
          		-- Désactivation de la contrainte
          		execute immediate 'ALTER TABLE ' || r_foreign_key.table_name || ' ENABLE CONSTRAINT ' || r_foreign_key.constraint_name;
    		  exception
    		    when others then
    		      Result := -2;
        	end;
        end loop;
    DBMS_OUTPUT.NEW_LINE ;
        return(Result);
        exception
          when others then
            Result := -1;
            return(Result);
    end xb_disable_constraints;
    /
     
    declare
      r         number;
      nom_table varchar2(30);
    begin
      nom_table := '&1';
      dbms_system.get_env('TERM', var_env);
    --dbms_output.put_line('variable env   : ' || var_env);
      r := xb_disable_constraints(nom_table);
    end;
    /
     
    exit;

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Dans ce bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare
      r         number;
      nom_table varchar2(30);
    begin
      nom_table := '&1';
      dbms_system.get_env('TERM', var_env);
    --  dbms_output.put_line('variable env   : ' || var_env);
      r := xb_disable_constraints(nom_table);
    end;
    /
    Vous n'avez pas déclaré votre variable var_env.
    De plus, il semblerait qu'il faut certains privilèges pour exécuter ce package.

    Attention toutefois, ce package n'étant pas documenté il est à utiliser avec précaution.

  5. #5
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut
    Effectivement, la version du script que j'avais mise ici, n'était pas forcément bonne en terme de compilation ...

    Comment connaitre les privilèges qu'il faut avoir pour exécuter le package idoine svp ? en clair, quels arguements à passer à l'ordre GRANT ?

    Merci pour votre réponse.

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

Discussions similaires

  1. [PHP 5.3] Message d'erreur pour fonctions dépréciées
    Par arthuro45 dans le forum Langage
    Réponses: 6
    Dernier message: 03/10/2009, 22h09
  2. Erreur de type pour la fonction CStringArray::Add
    Par crossrobotik dans le forum MFC
    Réponses: 9
    Dernier message: 11/06/2007, 10h05
  3. erreur PLS-00103 sur une fonction
    Par atruong dans le forum Oracle
    Réponses: 2
    Dernier message: 28/04/2006, 13h49
  4. Erreur PLS-00201
    Par AkA dans le forum Oracle
    Réponses: 2
    Dernier message: 14/04/2006, 12h04
  5. fonction LAG et erreur PLS-00103. Oracle 8i
    Par henrirobert dans le forum Oracle
    Réponses: 7
    Dernier message: 26/05/2005, 16h03

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