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 :

[PL/SQL] Curseur - Récupération du dernier élément


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut [PL/SQL] Curseur - Récupération du dernier élément
    Bonjour,

    Je voudrais savoir comment récupérer le dernier enregistrement d'un SELECT affecté à un curseur en PL/SQL. Je voudrais éviter d'avoir à faire autant de LOOP qu'il y a d'éléments dans la sélection, autrement dit, comment placer le curseur directement sur le dernier élément.

    Ce sont les informations du dernier enregistrement que je dois mettre dans une autre table. Je précise qu'il n'est pas possible de trier la table source pour être sûr de récupérer le dernier élément inséré dans cette table, car il n'y existe aucun champ 'chronologique' qui m'aurait permis d'inverser la sélection et de récupérer le 1er élément.

    Pardon si ma question peut paraître évidente, mais je suis novice en PL/SQL.

    Merci pour votre aide.

    Sébastien

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Une solution est de faire un SELECT BULK COLLECT dans un tableau, puis de n'en selectionner que le dernier element. Approximativement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT colonne
    BULK COLLECT 
    INTO l_array_value
    FROM table
    ;
     
    ma_dernier_valeur := l_array_value(l_array_value.COUNT);

    Cela dit, le dernier enregistrement que le fetch va recuperer n'a absolument AUCUNE garantie d'etre le dernier insere. La seule solution pour cela est de modifier le datamodel pour y ajouter un identifiant chronologique.

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour le conseil.

    Je me suis effectivement aperçu que le dernier enregistrement n'était pas forcément le dernier inséré. Il ne m'est pas possible de modifier le Datamodel, car il appartient à l'éditeur du produit développé sur Oracle. J'ai bien peur de ne pas arrivé à m'en sortir.

    Merci encore.

  4. #4
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Il suffirait juste de creer un set de triggers specifics qui enregistrerait et maintiendrait dans une table separee cet identifiant chronologique avec le rowid de la ligne inseree.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci. J'essayerai également.

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Finalement, j'ai trouvé comment faire autrement.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2008, 09h43
  2. Réponses: 5
    Dernier message: 29/12/2005, 07h03
  3. [PL/SQL) Curseur et nom de champ explicite
    Par Loko dans le forum Oracle
    Réponses: 6
    Dernier message: 01/12/2004, 15h07
  4. [PL/SQL] Curseur avec Paramètre
    Par blids dans le forum Oracle
    Réponses: 5
    Dernier message: 10/10/2004, 20h07
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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