Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2011, 10h30   #1
Invité de passage
 
Inscription : mars 2005
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 11
Points : 1
Points : 1
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.
frglyon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 11h28   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par frglyon Voir le message
Que faut-il ajouter pour que cela fonctionne ?
Votre code exact serait un bon début.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/07/2011, 13h43   #3
Invité de passage
 
Inscription : mars 2005
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 11
Points : 1
Points : 1
Il est vrai que c'est plus facile avec le code .. ci-dessous :

Code :
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;
frglyon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h49   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Dans ce bloc :
Code :
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 15h24   #5
Invité de passage
 
Inscription : mars 2005
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 11
Points : 1
Points : 1
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.
frglyon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h58.


 
 
 
 
Partenaires

Hébergement Web