Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1972 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Sélection du contenu des indexs d'une table

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélection du contenu des indexs d'une table

n°1995795
Yagmoth
Fanboy
Posté le 25-05-2010 à 11:36:29  profilanswer
 

Bonjour :o
 
Je cherche à récupérer le contenu de tous les index d'une table sous oracle.
 
Ce qui donne un peu près le code suivant :  

Code :
  1. SELECT *
  2. FROM MaTable
  3. WHERE COLUMN_NAME IN
  4.        (SELECT * FROM DBA_INDEXES WHERE TABLENAME = 'MaTable')


 
Sauf qu'évidemment, ça ne marche pas :D Pour cause : identificateur COLUMN_NAME invalide (ORA-00901)
 
Quelqu'un aurait une idée de comment je pourrais faire ? Merci d'avance  :jap:


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
mood
Publicité
Posté le 25-05-2010 à 11:36:29  profilanswer
 

n°1995854
Fred999
Rabat-joie
Posté le 25-05-2010 à 13:26:40  profilanswer
 

Salut,
 
Essaie avec "select COLUMN_NAME from DBA_INDEXES..." dans ton IN.
 
++

n°1995859
Yagmoth
Fanboy
Posté le 25-05-2010 à 13:41:27  profilanswer
 

Fred999 a écrit :

Salut,
 
Essaie avec "select COLUMN_NAME from DBA_INDEXES..." dans ton IN.
 
++


 
J'avais déjà essayé, sans succès (que ce soit avec COLUMN_NAME, qui n'existe pas dans la vue DBA_INDEXES, ou avec INDEX_NAME, qui lui y figure) :/


Message édité par Yagmoth le 25-05-2010 à 13:41:37

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1995863
boomy29
PSN: tintine29
Posté le 25-05-2010 à 13:49:00  profilanswer
 

ya pas une table systeme du style user_tab_columns avec comme champs column_name?

Message cité 1 fois
Message édité par boomy29 le 25-05-2010 à 14:02:19
n°1995865
Fred999
Rabat-joie
Posté le 25-05-2010 à 13:49:40  profilanswer
 

Aaaah je comprends mieux
 
Hum désolé dans ce cas je pourrai pas t'aider, j'ai pas le mdd des tables système d'Oracle sous la main :/

n°1995878
Yagmoth
Fanboy
Posté le 25-05-2010 à 14:09:04  profilanswer
 

boomy29 a écrit :

ya pas une table systeme du style user_tab_columns avec comme champs column_name?


 
Si, sauf que je n'y vois rien indiquant si la colonne est indexée. Je viens de trouver : il y a la table ALL_IND_COLUMN qui contient cette info. Par contre, toujours pas moyen de préciser dans la clause "where" du premier select qu'il faut vérifier le nom de la colonne.
 

Fred999 a écrit :

Aaaah je comprends mieux
 
Hum désolé dans ce cas je pourrai pas t'aider, j'ai pas le mdd des tables système d'Oracle sous la main :/


 
Merci quand même  :jap:


Message édité par Yagmoth le 25-05-2010 à 14:18:29

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1995912
casimimir
Posté le 25-05-2010 à 14:41:18  profilanswer
 

et pourquoi tu veux passer par ta table pour faire ca? tu as le TABLE_OWNER et TABLE_NAME dans SYS.ALL_IND_COLUMNS c'est la dessus qu'il faut filtrer

n°1995916
Yagmoth
Fanboy
Posté le 25-05-2010 à 14:48:29  profilanswer
 

casimimir a écrit :

et pourquoi tu veux passer par ta table pour faire ca? tu as le TABLE_OWNER et TABLE_NAME dans SYS.ALL_IND_COLUMNS c'est la dessus qu'il faut filtrer


 
Parce ce que je cherche en définitive, c'est le contenu des colonnes indexées. Sauf que j'essaie de parvenir à leur contenu, sans connaître à l'avance le nom desdites colonnes.
 
En gros je veux faire l'équivalent de  
 

Code :
  1. SELECT ID, NOM FROM CLIENT


 
Sans avoir à préciser ID et NOM (on les suppose inconnus).
 
Dans l'idée, ce serait quelque chose comme ça (syntaxiquement incorrect) :

Code :
  1. SELECT
  2. (SELECT COLUMN_NAME FROM ALL_IND_COLUMNS WHERE TABLENAME = "MaTable" ) FROM MaTable


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1995928
casimimir
Posté le 25-05-2010 à 14:57:46  profilanswer
 

si tu passes par un language au dessus tu peux construire une requête qui la formaterait correctement, ou si tu veux rester ne pur oracle il faudra passer par du pl/sql pour générer la requête, mais je ne sais pas si il y a moyen de renvoyer un ref cursor a partir d'un sql dynamique.
 
faut voir si c'est pour automatiser complètement ou bien si une fontion qui te revoie le sql que tu exécutes a coté te suffit

n°1995937
Yagmoth
Fanboy
Posté le 25-05-2010 à 15:06:35  profilanswer
 

Réponse que je redoutais :D Je peux éventuellement me débrouiller en programmant, mais l'idée était d'essayer de tout faire en une requête.


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Sélection du contenu des indexs d'une table

 

Sujets relatifs
[Flash]recuperer la selection d'une comboboxReprésentation de données et alogorithme de filtre de questionnaires
[résolu] modification du contenu d'une page en fonction d'un paramètreselect : deux références sur une même table
Pgsql/C: truncate table après un timer???Got Error 12 from table handler
Modifier div par une selection d'une autre divVB : Insérer le contenu d'un textbox dans une page web
oracle utiliser la même table pour lire ....Probléme selection multiple [Résolu]
Plus de sujets relatifs à : Sélection du contenu des indexs d'une table


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR