Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 12h10   #1
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 443
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 443
Points : 7 528
Points : 7 528
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 :
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h04   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2011, 15h26   #3
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 443
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 443
Points : 7 528
Points : 7 528
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h52.


 
 
 
 
Partenaires

Hébergement Web