Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
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 18/04/2005, 09h49   #1
Invité de passage
 
Inscription : avril 2005
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 2
Points : 0
Points : 0
Par défaut [SQL-Interbase] Fonction SHOW TABLES

Bonjour,

Je me connect à une base de données Interbase (BD.GDB) via SQL-View ou CuteSQL, logiciel me permettant d'effectuer des requête SQL sur ma BD. Du point de vu requête aucun problème mais je voudrais obtenir la liste des tables qui compose qui ma BD.

Avec une base de données via MySQL, la commande qui permet d'obtenir la liste des tables est SHOW TABLES mais le problème c'est que cette commande ne fonctionne pas avec Interbase. De plus j'ai également essayé la commande IBDatabase.GetTableNames(Listbox.Items) mais pas plus convaincant, SQL-View ne connaît pas cette commande.

Par conséquent j'aimerais savoir si une personne pouvait m'éclaircir sur l'ordre SQL qu'il faudrait que j'utilise pour obtenir la liste des tables qui compose ma BD.

Merci d'avance et bonne journée
polocfa41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2005, 10h58   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Il faut exploiter la colonne
Citation:
RDB$RELATION_NAME
de la table
Citation:
RDB$RELATIONS
, en éliminant les noms commençant par RDB$...

Code :
SELECT rdb$relation_name FROM rdb$relations WHERE rdb$relation_name NOT LIKE 'RDB$%'
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2005, 11h27   #3
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Par défaut Re: [SQL-Interbase] Fonction SHOW TABLES

Citation:
Envoyé par polocfa41
Avec une base de données via MySQL, la commande qui permet d'obtenir la liste des tables est SHOW TABLES mais le problème c'est que cette commande ne fonctionne pas avec Interbase.
Cette commande fonctionne sous Interbase et Firebird.
Lancez l'utilitaire ISQL qui est livré avec Interbase ou firebird, connectez vous à votre base
Code :
CONNECT 'Serveur:DataBaseAliasOuCheminCompletEtNomDeLaDataBase' USER 'SYSDBA' PASSWORD 'masterkey';
et vous verrez que la commande fonctionne parfaitement comme les autres show d'ailleur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SHOW TABLES; 
SHOW TABLE MATABLE; 
SHOW INDICES;
SHOW INDEX MONINDEX;
SHOW INDEX MATABLE;
SHOW GENERATORS;
SHOW VIEWS; 
SHOW ROLE;
SHOW GRANT;
SHOW TRIGGERS;
SHOW TRIGGER MONTRIGGER;
SHOW PROCEDURES;
SHOW PROCEDURE MAPROCEDURE;
/* Etc (il y en a d'autres) */
Citation:
Envoyé par polocfa41
De plus j'ai également essayé la commande IBDatabase.GetTableNames(Listbox.Items) mais pas plus convaincant, SQL-View ne connaît pas cette commande.
Oui c'est normal ce n'est pas un ordre SQL mais une ligne de commande Delphi (langage de programmation Pascal Objet), qui utilise les composants IBX (composants d'accès natif à interbase).
C'est donc vos deux outils SQL (ou le moyens utilisé pour se connecter à ces bases) qui n'implétentent pas le show tables pour les bases de données Interbase/Firebird.

Vous avez encore une chance d'y arriver en essayant de regarder dans les tables systemes avec cet ordre SQL :
Code :
1
2
3
SELECT DISTINCT RDB$RELATION_NAME FROM rdb$RELATION_FIELDS
WHERE RDB$VIEW_CONTEXT IS NULL
  AND RDB$SYSTEM_FLAG = 0;
Qui rammène la liste des tables sans doublon et en exluant les vues et tables systemes.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2005, 10h55   #4
Invité de passage
 
Inscription : avril 2005
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 2
Points : 0
Points : 0
Merci à vous 2,

L'ordre SQL suivant m'a permis d'obtenir la liste des tables de ma BD :

select distinct RDB$RELATION_NAME from rdb$RELATION_FIELDS
where RDB$VIEW_CONTEXT is null
and RDB$SYSTEM_FLAG = 0;

Par contre en passant via l'utilitaire ISql d'interbase, j'ai réussi à me connecter à ma base mais l'ordre SQL Show TABLE ne fonctionnait pas. Message Parse Error.

C'est pas grave, puisque j'ai enfin ma liste.

En tout cas, MERCI
polocfa41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2005, 11h33   #5
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Celà fonctionne avec ISQL pourtant, je parle de ISQL en ligne de commande pas de celui graphique livré avec IBConsole (là je ne sais pas s'il accepte le show).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h41.


 
 
 
 
Partenaires

Hébergement Web