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 :

Débutant. Comment rassembler du code.


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 47
    Par défaut Débutant. Comment rassembler du code.
    Bonjour,

    J'ai 3 procédures et 30 triggers.
    Comment peut on les rassembler dans un script pour l'exécuter en une fois.
    Pour le moment, je suis obligé de le faire un par un. C'est un peu long !

    Merci.

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    qu'appelez-vous "triggers" ?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 47
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    qu'appelez-vous "triggers" ?
    Se sont des déclencheurs sur des commandes DELETE. Celle-ci appelle une des 3 procédures qui permet d'effacer d'autres tables.

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Ok. Sachez qu'un déclencheur sur table ne s'appelle pas. Il se déclenche sur une action menée sur la table sous-jascente (INSERT,UPDATE,DELETE).
    Vous n'avez donc rien à livrer, sinon vos 3 procédures.
    Vous pouvez parfaitement créer un bloc PL/SQL qui les exécutes à la suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Begin
      procedure1( ... ) ;
      procedure2( ... ) ;
      procedure3( ... ) ;
    End;

  5. #5
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 47
    Par défaut
    Ce que je veut dire, c'est que mon fichier sql est composé de plusieurs blocs.

    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
     
    create or replace PROCEDURE DELETE_STRUCTURE
    ( STRUCT_EV_GUID IN VARCHAR2
    ) AS
    BEGIN
    DECLARE
    ....
    END DELETE_STRUCTURE;
     
    -- Trigger pour SERIES
    create or replace TRIGGER TR_DEL_SERIES
    BEFORE DELETE ON SERIES
    FOR EACH ROW
    BEGIN
      DELETE_STRUCTURE(:OLD.Event_GUID);
    END;
     
    .....(suite de plusieurs trigger définis)
    Mais quand je l'exécute, il met tout le fichier sql dans une seule procédure DELETE_STRUCTURE, trigger y compirs.

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Par défaut
    Bonjour,

    tu n'as qu'à rajouter entre chaque procédure, trigger... un slash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE PROCEDURE DELETE_STRUCTURE
    ...
    ...
    END DELETE_STRUCTURE;
    /
    
    CREATE OR REPLACE TRIGGER TR_DEL_SERIES
    ...
    ...
    END;
    /
    Comme ça tout sera exécuté indépendement les uns des autres.

    Bonne continuation.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Et avec des / entre chaque proc ?
    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
    CREATE OR REPLACE PROCEDURE DELETE_STRUCTURE
    ( STRUCT_EV_GUID IN VARCHAR2
    ) AS
    BEGIN
    ....
    END DELETE_STRUCTURE;
    /
     
    -- Trigger pour SERIES
    CREATE OR REPLACE TRIGGER TR_DEL_SERIES
    BEFORE DELETE ON SERIES
    FOR EACH ROW
    BEGIN
      DELETE_STRUCTURE(:OLD.Event_GUID);
    END;
    /
    EDIT : Grilled

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

Discussions similaires

  1. [débutant] Comment décaler un bouton à partir du code Java ?
    Par shamri dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 18/06/2010, 14h29
  2. Réponses: 7
    Dernier message: 10/02/2009, 14h41
  3. [Débutant] Comment ce code marche-t-il?
    Par coyotte507 dans le forum Caml
    Réponses: 4
    Dernier message: 28/09/2008, 21h22
  4. [Débutant] Comment adapter ce petit bout de code?
    Par wazodnuit dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2007, 09h03
  5. Réponses: 1
    Dernier message: 04/01/2007, 13h43

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