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

Langage SQL Discussion :

[Oracle] utilisation d'une séquence


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut [Oracle] utilisation d'une séquence
    Bonjour,

    je souhaiterais réaliser une insertion dans ma table application (id_application,nom_application)à partir d'un SELECT pour la colonne nom_application et à partir d'une incrémentation automatique pour l'id.

    j'ai essayé en créant une séquence

    CREATE SEQUENCE sq_id_transaction
    MAXVALUE 10000
    START WITH 1
    INCREMENT BY 1

    SELECT sq_id_transaction.NEXTVAL, COLONNE2
    FROM
    (
    SELECT COLONNE2
    FROM TABLE1
    WHERE (TABLE1.COLONNE2 LIKE '%appli%')
    )

    mais la syntaxe n'est pas bonne

    Sauriez m'indiquer comment réaliser cette incrémentation automatique?

    merci d'avance

    PS: la partie SELECT COLONNE2
    FROM TABLE1
    WHERE (TABLE1.COLONNE2 LIKE '%appli%')
    me renvoie ce que je souhaite obtenir

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Une séquence se gère grâce à la pseudo table DUAL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SQL> CREATE SEQUENCE sq_id_transaction
      2  MAXVALUE 10000
      3  START WITH 1
      4  INCREMENT BY 1
      5  ;
     
    Séquence créée.
     
    SQL> SELECT sq_id_transaction.NextVal FROM Dual;
     
       NEXTVAL
    ----------
             1
    Pour faire ce que tu souhaites, un simple produit cartésien devrait convenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT sq_id_transaction.NEXTVAL, COLONNE2
    FROM Dual, TABLE1
    WHERE TABLE1.COLONNE2 LIKE '%appli%';
    Par contre, si tu répétes plusieurs fois ta requête, tu n'auras pas les mêmes résultats, la séquence ayant été "incrémentée" ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Xo : ???
    pourquoi pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT sq_id_transaction.NEXTVAL, COLONNE2
    FROM TABLE1
    WHERE COLONNE2 LIKE '%appli%';
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Oui, mea culpa , le "Dual" ne sert à rien si il y a un autre nom de table, pas l'habitude de faire des requêtes de ce type ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    En fait le code que j'ai écrit ... était bon. Il fallait simplement éxécuter les 2 requetes (création séquence, utilisation de cette séquence) en 2 temps ou du moins ça fonctionne comme ça.

    merci pour votre aide

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

Discussions similaires

  1. Utilisation d'une séquence Oracle
    Par juju1988 dans le forum Débuter
    Réponses: 6
    Dernier message: 17/06/2011, 13h25
  2. Réponses: 1
    Dernier message: 23/03/2009, 13h48
  3. [Oracle 9i] Appeler une séquence
    Par bibi_obs dans le forum PL/SQL
    Réponses: 3
    Dernier message: 08/10/2008, 09h44
  4. utilisation d'une séquence
    Par marcusien dans le forum Oracle
    Réponses: 3
    Dernier message: 27/02/2007, 13h14
  5. Réponses: 4
    Dernier message: 18/10/2004, 16h18

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