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 :

Création d'une séquence dans une transaction


Sujet :

PL/SQL Oracle

  1. #1
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut Création d'une séquence dans une transaction
    Bonjour,

    J'ai un probleme avec la creation d'une sequence au sein d'une transaction :

    J'ai du code qui est execute dans une transaction (je n'ai pas la possibilite de modifier cela), et dans ce code, je dois creer une sequence. J'ai donc ajoute le code suivant :

    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
             /* ... sequence */
     
            snprintf (ma_sequence, LG_SEQUENCE,
                    " CREATE SEQUENCE svc_seq_%s "
                    " START WITH 1 "
                    " INCREMENT BY 1 "
                    " MAXVALUE %lu "
                    " MINVALUE 1 "
                    " CYCLE "
                    " CACHE %d "
                    " NOORDER ",
                    appli_name, ULONG_MAX, LG_CACHE_SEQUENCE);
     
            EXEC SQL PREPARE service_sequence FROM :ma_sequence;
            if (SQLCODE != 0)
            {
                /* Gestion de l'erreur */
                return (-1);
            }
     
            EXEC SQL EXECUTE service_sequence;
            if (SQLCODE != 0)
            {
                /* Gestion de l'erreur */
                return (-1);
            }
    Mon soucis est que lorsque j'execute ce code, j'ai une erreur "ORA-02089: COMMIT is not allowed in a subordinate session".
    Ok, si j'ai bien compris, c'est parce que la creation d'une sequence n'est pas gerable dans la transaction, ce qui ne me pose pas de probleme. Mais je ne trouve pas de solution pour creer tout de meme la sequence !

    J'ai essaye de regarder un peu les transactions autonomes : PRAGMA AUTONOMOUS_TRANSACTION, mais je n'arrive pas a trouver la syntaxe correcte - et je ne suis pas certain que ce soit possible.

    Est-ce que vous auriez une solution pour que je puisse creer ma sequence dans ce code ?

    Merci,

  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 objets ne doivent pas être crées dans des transactions!
    Soit vous utilisez une procédure PL/SQL dans une transaction autonome pour créer la séquence soit si vous n'avez pas besoin dans cette transaction d'interroger la séquence vous pouvez la créer via DBMS_JOB un peu plus tard!
    Mais à long terme la meilleure solution sera de virer la création de la séquence dans des transactions.

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Merci beaucoup pour la reponse. Je me rends bien compte que ce n'est pas optimal, mais je crains de devoir passer par une procedure dans une transaction autonome.

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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