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 :

Recherche du nom d'une partition


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut Recherche du nom d'une partition
    Bonjour,

    J'ai besoin d'identifier dans une table partitionnée la partition dans laquelle devrait se trouver une valeur donnée.
    J'ai bien trouvé la vue SYS.ALL_TAB_PARTITION et sa colonne HIGH_VALUE... mais je ne sais pas comment comparer mes valeurs avec le contenu de cette colonne.
    Il faut préciser que le partitionnement s'effectue sur le contenu de deux colonnes de la table !
    Voici la définition (réduite) de la table qui m'occupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE TB_HISTO
        (   ID_PERSONNE NUMBER(35,0)    NOT NULL
        ,   ID_ART      NUMBER(15,0)    NOT NULL
        ,   CD_ANNEE    NUMBER(4,0)     NOT NULL
        ,   CD_MOIS     NUMBER(2,0)     NOT NULL 
        )
    TABLESPACE USERS 
    PARTITION BY RANGE
        (   CD_ANNEE
        ,   CD_MOIS
        )
        (   PARTITION PR_HISTO_M1 VALUES LESS THAN (2010, 2)
        ,   PARTITION PR_HISTO_M2 VALUES LESS THAN (2010, 3)
        )
    Je n'ai pas la main sur la création des partitions et il n'y a aucune règle logique permettant de lier le nom de la partition à la date (il pourrait y avoir plusieurs mois dans une partition, on n'est pas sûr de la date associée à la première partition, ...).
    De plus, une partition peut-être vide donc je ne peux pas me baser sur son contenu, mais uniquement sur sa définition.

    Quelqu'un sait-il comment convertir le contenu de cette colonne HIGH_VALUE de type LONG dans un type utilisable pour une comparaison avec des valeurs numériques ou caractères ?

    Merci d'avance
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ai un peu de mal à cerner le besoin, c'est de retrouver le nom d'une partition à partir des données d'une ligne présente dans la table ?

    Pour le type long je pense qu'il faut passer par un petit PL/SQL :
    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
    declare
        vls$partition_name varchar2(30);
        vln$partition_year number(4);
    begin
        for c_part in
        (
        select *
          from sys.all_tab_partitions
         where table_name = 'TB_HISTO'
        )
        loop
          vls$partition_name := c_part.partition_name;
          vln$partition_year := to_number(substr(c_part.high_value, 1, 4));
          dbms_output.put_line('Partition : ' || vls$partition_name || ', année : ' || to_char(vln$partition_year));
        end loop;
    end;
    /
     
    Partition : PR_HISTO_M1, année : 2010
    Partition : PR_HISTO_M2, année : 2010

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Merci beaucoup de ta réponse rapide.
    ça ne passait pas sous sql-developper, et je cherchais dans tous les sens alors que c'est tout simple
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. Recherche le nom d'une modelisation
    Par -Fly- dans le forum Schéma
    Réponses: 3
    Dernier message: 02/04/2012, 23h30
  2. Recherche du nom d'une police d'écriture
    Par th-girl13 dans le forum Imagerie
    Réponses: 1
    Dernier message: 03/03/2011, 11h52
  3. [Série] Recherche le nom d'une série sur récré A2
    Par Oberown dans le forum Films & TV
    Réponses: 2
    Dernier message: 30/08/2010, 13h38
  4. recherche le nom d'une serie tv.
    Par zeavan dans le forum Films & TV
    Réponses: 9
    Dernier message: 13/07/2009, 15h03
  5. rechercher un nom avec une date
    Par fins51 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/04/2007, 19h27

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