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 :

Plusieurs procédures appelant une procédure


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Plusieurs procédures appelant une procédure
    Bonjour

    j'ai un petit souci : voilà , j'ai plusieurs procédures que je compte industrialiser pour qu'elles soient lancées simultanément.
    Ces mêmes procédures appellent en fin de traitement une seule et même procédure qui dans cette procédure fait un truc du genre :

    Procédure unique appelée par les autres proc :
    Proc unique ( pi_table_proc)

    1ère phase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TEMP  AS select H1, H2, H3 from ||pi_table_proc;
    2ème phase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM pi_table_proc where ID in (select ID from ||pi_table_proc group by ID having count (*) >1;
    Le problème c'est que lorsque j'envoie les procédures simultanées, ça se percute lors de l'appel de procédure unique ( forcémment vous allez me dire )

    N'y a t'il pas une astuce me permettant de mettre en attente ( en queue ) les procédures ?

  2. #2
    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
    Par défaut
    Avec Oracle les gens civilisés ne crée pas des tables à la volé. Ca se fait avec Sysbase ou SQLServeur mais pas avec Oracle. Donc «industrialisez » le traitement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    les gens civilisés

    Bon...il s'agit d'une table temporaire que je delete par la suite.

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Pourquoi ne pas créer une bonne fois pour toute une Global Temporary Table ? Vous aurez autant de tables indépendantes que de sessions.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    non car il va me falloir créer une quinzaine de procédures qui font exactement le même procédé ...je trouve ça débile , je ne sais pas ce que vous en pensez.

    j'ai trouvé une solution : dbms_lock.request.

    Merci pour vos réponses en tout cas

  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
    Par défaut
    Citation Envoyé par kakolac Voir le message
    ...j'ai trouvé une solution : dbms_lock.request.
    Par défault les utilisateur n'ont pas les droits d'utiliser Dbms_Lock. Non ce n'est pas un solution dans votre cas, vous n'en avez pas besoin.

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par kakolac Voir le message
    non car il va me falloir créer une quinzaine de procédures qui font exactement le même procédé ...je trouve ça débile , je ne sais pas ce que vous en pensez.

    j'ai trouvé une solution : dbms_lock.request.

    Merci pour vos réponses en tout cas
    Personnellement c'est le lock que je trouve absurde. À quoi sert de faire des choses en parallèle si c'est pour dire "je met un lock pour faire du séquentiel" ?

    Sinon, avez-vous pris la peine de lire ce qu'est une Global Temporary Table ?
    Pour faire court : une seule table, mais chaque session gère de façon indépendante ce qu'il y a dedans. La durée de vie du contenu ne dépasse donc pas la durée de vie de la session (on peut même faire plus court, car le mode par défaut supprime toutes les lignes à chaque COMMIT). À moins d'avoir la même session qui appelle plusieurs de vos procédures, c'est exactement ce qu'il vous faut.

Discussions similaires

  1. appel d'une procédure dans une procédure
    Par breizh76 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 23/03/2010, 16h47
  2. Appeler une procédure dans une requête
    Par gold15 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 13/01/2009, 15h08
  3. Appel une procédure d'une autre procédure
    Par 18mar dans le forum SQL
    Réponses: 16
    Dernier message: 31/05/2008, 12h39
  4. Comment appeler une procédure dans une autre unité ?
    Par michel71 dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2007, 17h27
  5. Appeler une procédure d'une autre base ?
    Par Loko dans le forum SQL
    Réponses: 2
    Dernier message: 07/09/2007, 16h23

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