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]triez des variables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Par défaut [PL/SQL]triez des variables
    Bonjour,

    J'ai 5 variables (V_1, V_2 .... V_5) et je veux à l'aide d'une fonction les trier du plus grand au plus petit .

    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
    Il devrait suffir d'utiliser une collection INDEX BY pour cela.

    Puvez-vous donner un example concret ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 43
    Par défaut
    Citation Envoyé par SheikYerbouti
    Il devrait suffir d'utiliser une collection INDEX BY pour cela.

    Puvez-vous donner un example concret ?
    Voici mon cas réel :
    J'ai une table
    dem (
    old_1 varchar2(10),
    old_2 varchar2(10),
    old_3 varchar2(10),
    old_4 varchar2(10),
    old_5 varchar2(10)
    )

    je veux dans un trigger "avant-insert" classer les valeurs inserées dans les champs old_1, old_2, old_3, old_4, old_5 du plus grand au plus petit.

    SQL> insert into dem(old_1, old_2, old_3, old_4, old_5) values (2,4,1,3,5);

    1 row inserted

    SQL> select * from dem;

    old_1....old_2....old_3....old_4....old_5
    .....5.........4..........3.........2..........1

    1 rows selected

    Merci.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Par défaut
    Moi je ferais quelque chose du genre :
    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
    27
    28
    29
     
    ...
    CURSOR c_val IS
    SELECT valeur FROM
    (SELECT :old.old_1 valeur FROM dual
    UNION
    SELECT :old.old_2 valeur FROM dual
    UNION
    SELECT :old.old_3 valeur FROM dual
    UNION
    SELECT :old.old_4 valeur FROM dual
    UNION
    SELECT :old.old_5 valeur FROM dual)
    ORDER BY valeur desc;
     
    TYPE list IS TABLE OF VARCHAR2 INDEX BY BINARY_INTEGER;
    tab list;
    i NUMBER := 0;
    BEGIN
      FOR r_val IN c_val LOOP
        i := i + 1;
        tab(i) := r_val.valeur;
      END LOOP;
      :new.old_1 := tab(1);
      :new.old_2 := tab(2);
      :new.old_3 := tab(3);
      :new.old_4 := tab(4);
      :new.old_5 := tab(5);
    END;
    dans un trigger before insert.
    Mille excuses si quelques erreurs de syntaxe.

  5. #5
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    "UNION ALL" peut etre pour gérer le cas ou 2 valeurs sont identiques...

  6. #6
    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
    Vous pouvez utiliser un curseur sur la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE(sys.dbms_debug_vc2coll('1','5','2'))
    ORDER BY 1 DESC

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2011, 00h00
  2. [SQL] Récupérer des variables d'une liste déroulante
    Par jermel2 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/06/2007, 18h21
  3. [SQL] insérer des variables php dans une requête sql
    Par lili38 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 22/06/2007, 16h38
  4. Sql : regrouper des variables
    Par matybouch dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2007, 13h48
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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