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 :

trigger sur package pl


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut trigger sur package pl
    Bonjour a tous
    je voulais savoir s'il est possible de creer un trigger qui se declenche lorsque un package PL/SQL est crée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE [OR REPLACE] PACKAGE package_name
    le corps du trigger serait de donner un grant a l'utilisateur qui se servira du package et aussi de creer un synomyme du package..Tout ceci est faisable?

    J'ai jamais ecrit un trigger donc je me lance avec ce super pas beau pseudo code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     CREATE TRIGGER grant_user_plus_synomyme
     AFTER
     la je sais pas comment lui dire:
     CREATE PACKAGE avec son nom?
     
     BEGIN
    	grant lePrivilege a l'utilisateur;
        create synomyme;
     END IF;
     END;
    Voila c'est l'idée
    qq'un sait faire ca?
    D'avance merci

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 21
    Par défaut Définition d’un déclencheur
    Bonjour,
    La définition d’un déclencheur:
    Un déclencheur de base de données est un ensemble d’instructions qui s’exécutent lorsque le contenu d’une table est modifié par l’intermédiaire d’une instruction INSERT, UPDATE ou DELETE.
    donc je pense, on ne peut pas définir un déclencheur au niveau d'un package

    Salutations ,
    khalid



    Citation Envoyé par ldiaz Voir le message
    Bonjour a tous
    je voulais savoir s'il est possible de creer un trigger qui se declenche lorsque un package PL/SQL est crée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE [OR REPLACE] PACKAGE package_name
    le corps du trigger serait de donner un grant a l'utilisateur qui se servira du package et aussi de creer un synomyme du package..Tout ceci est faisable?

    J'ai jamais ecrit un trigger donc je me lance avec ce super pas beau pseudo code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     CREATE TRIGGER grant_user_plus_synomyme
     AFTER
     la je sais pas comment lui dire:
     CREATE PACKAGE avec son nom?
     
     BEGIN
    	grant lePrivilege a l'utilisateur;
        create synomyme;
     END IF;
     END;
    Voila c'est l'idée
    qq'un sait faire ca?
    D'avance merci

  3. #3
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Citation Envoyé par khalid_montreal Voir le message
    Un déclencheur de base de données est un ensemble d’instructions qui s’exécutent lorsque le contenu d’une table est modifié par l’intermédiaire d’une instruction INSERT, UPDATE ou DELETE.
    Cette définition est incomplète, au moins en ce qui concerne Oracle. On peut créer des triggers sur des évènements DML (INSERT, UPDATE ou DELETE), mais également des évènements de base (LOGON par ex.) ou des évènements DDL.
    Voir ici pour le détail de la syntaxe :http://download.oracle.com/docs/cd/B...htm#sthref7885

    Dans ton cas, la syntaxe ressemblerait à l'exemple de la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TRIGGER audit_db_object AFTER CREATE
       ON SCHEMA
          pl/sql_block

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut trigger sur package pl
    Bonjour
    super...ok j'ai vu dans la doc le paragraphe qui parle de ca, donc dans ce cas, le trigger se declencherais chaque fois qu'un objet est crée avec CREATE sur un schema en particulier,
    le code serait just de donner les grant... ok
    Alors il me vient une autre question.

    Pour faire un grant la sintaxe etant:
    grant execute on object to user;

    De ce code je connais le user qui dans ce cas est toujours le meme, mais
    j'ai aussi besoins de recuperer le nom du package de façon dynamique, c'est possible ca?
    D'avance merci

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut trigger sur package pl/sql
    re moi

    j'ai vu ceci en cherchant un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'execute immediate "grant select on ' ||
                                         ora_dict_obj_name ||
                                        ' to scott";'
    ca voudrais dire que implicitement lorsque le trigger se declenche, la variable
    ora_dict_obj_name contient le nom du package? tiens je vais tester avec un output juste pour voir.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut trigger sur pacakge pl/sql
    Yooo
    ca marche
    avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER audit_db_object AFTER CREATE
       ON MONSCHEMA.SCHEMA
          BEGIN
          dbms_output.put_line(ora_dict_obj_name);
    	  END;
    lorsque je cre un package PL/SQL avec create or replace, ca m'a imprimé le nom du package que j'ai crée...Donc si dans le code je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grant execute on ora_dict_obj_name to user;
    ca devrait suffir n'est ce pas?

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

Discussions similaires

  1. trigger sur deux tables
    Par Shabata dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2004, 16h55
  2. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02
  3. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  4. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  5. Pb Trigger sur vue
    Par cosminutza dans le forum Développement
    Réponses: 3
    Dernier message: 28/07/2003, 16h37

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