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 :

parametrage PRAGMA RESTRICT_REFERENCES


Sujet :

Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 69
    Points
    69
    Par défaut parametrage PRAGMA RESTRICT_REFERENCES
    bonjour,
    je souhaiterais savoir s'il est possible de desactiver, avec des parametres syteme ou autre, des PRAGMA RESTRICT_REFERENCES.
    il me gene pour tracer les erreurs en base via une procedure de trace qui utilise un PRAGMA AUTONOMOUS_TRANSACTION.
    avez vous des idees pour contourner le probleme ?
    je precise que je ne peux pas ecrire dans un fichier avec utl_file (interdiction par les DBA)

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Bonjour

    Un petit exemple concret serait bienvenu.
    Et n'oubliez pas de préciser votre version d'Oracle.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 69
    Points
    69
    Par défaut
    voici un exemple dans le fichier joint:
    le probleme se situe dans l'appel de P_TRACE_ALL qui ne compile meme pas a cause du pragma RESTRICT_REFERENCES qui interdit l'alteration des data

    base 10G
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Pour moi, vous n'avez pas besoin du PRAGMA RESTRICT_REFERENCES, c'est une vieillerie qui est devenue inutile en 8i.

    Si vous tenez à l'utiliser, vous pouvez profiter de l'option TRUST, qui indique au compilateur de vous croire sur parole quand vous dites que la fonction ne modifie pas la base, et de ne pas examiner le corps de votre fonction pour vérifier vos dires.

    Comme vous pouvez voir, j'ai même mis en commentaire le PRAGMA car il n'est pas nécessaire, mais vous pouvez aussi l'activer et tester avec ou sans le TRUST.

    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
    drop table trace purge;
    create table trace(date_erreur date, code varchar2(10), libelle varchar2(100));
    
    create or replace package pkgdemo
    is
    	function recup_sal(p_empno number) return number;
    	procedure trace(p_code number);
    	
    --	pragma restrict_references (recup_sal, WNPS, WNDS, TRUST);
    	
    end pkgdemo;
    /
    
    create or replace package body pkgdemo 
    is
    	function recup_sal(p_empno number) return number
    	is
    		
    		v_sal	int;
    	begin
    		select sal into v_sal from scott.emp where empno=p_empno;
    		return v_sal;
    	exception
    		when no_data_found then
    			trace(sqlcode);
    			return null;
    	end recup_sal;
    	
    	procedure trace(p_code number)
    	is
    		pragma autonomous_transaction;
    		v_libelle varchar2(200);
    	begin
    		v_libelle:=sqlerrm(p_code);
    		insert into trace values(sysdate, p_code, v_libelle);
    		commit;
    	end trace;
    	
    end pkgdemo;
    /
    
    -- celui-ci provoquera une erreur
    select pkgdemo.recup_sal(10) from dual;
    select pkgdemo.recup_sal(7369) from dual;
    select empno, pkgdemo.recup_sal(empno) from scott.emp;
    
    select * from trace;
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 69
    Points
    69
    Par défaut
    merci d'avoir repondu

    je me demande alors si le PRAGMA RESTRICT_REFERENCES avec l'option TRUST a encore une raison d'exister ? à quel moment peut il encore jouer un role ?

  6. #6
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252

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

Discussions similaires

  1. à quoi sert "PRAGMA RESTRICT_REFERENCES"
    Par viktor951 dans le forum Oracle
    Réponses: 2
    Dernier message: 17/12/2012, 16h48
  2. Utilité de PRAGMA RESTRICT_REFERENCES
    Par dydo01 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 02/02/2011, 10h04
  3. [TOMCAT] parametrage du fichier web.xml
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 12
    Dernier message: 06/05/2010, 12h09
  4. #error ,#pragma
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/11/2003, 00h05
  5. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33

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