Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 09/05/2006, 10h12   #1
Invité de passage
 
Inscription : mai 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 11
Points : 1
Points : 1
Par défaut [IB] Obtenir le type d'un champ

bonjour,

je recherche la requête SQL me permettant d'extraire le type des champs des tables de ma base Interbase (ex char, varchar etc)

je sais que pour une base MySql on peut exécuter la requête (Shows columns from nom_table)

mais je n'ai pas trouvé l'équivalent pour une base interbase

merci d'avance
chant78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2006, 10h30   #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
1/ Il existe un forum spécialisé Interbase.....

2/ C'est décrit dans la table RDB$FIELDS :
Citation:
Envoyé par Aide IB (LangRef)
RDB$FIELD_TYPE SMALLINT Specifies the datatype of the column being defined;
changing the value of this column automatically
changes the datatype for all columns based on the
column being defined
Valid values are:
• BLOB - 261
• CHAR - 14
• CSTRING - 40
• D_FLOAT - 11
• DOUBLE - 27
• FLOAT - 10
• INT64 - 16
• INTEGER - 8
• QUAD - 9
• SMALLINT - 7
• DATE - 12
(dialect 3 DATE)
• TIME - 13
• TIMESTAMP - 35
(DATE in older versions)
• VARCHAR - 37
__________________
"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 09/05/2006, 11h17   #3
Invité de passage
 
Inscription : mai 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 11
Points : 1
Points : 1
merci,
je vais tester
j'ai également posé la question dans le forum Interbase
chant78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 08h57   #4
Invité de passage
 
Inscription : mai 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 11
Points : 1
Points : 1
La table RDB$Fields est une table système et je n'arrive pas à faire le lien avec les tables de données pour récupérer les types de champs
je recherche la commande Sql qui me permettrait de récuperer les types de champs d'une table d'une base Interbase
chant78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 19h10   #5
Membre régulier
 
Inscription : février 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 100
Points : 88
Points : 88
Salut,

Voici la requête qui permet de récupérer le type d'un champs :

Code :
1
2
3
4
5
6
 
SELECT RDB$FIELD_SOURCE AS TYPE_CHAMP 
FROM RDB$RELATION_FIELDS rf
INNER JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
WHERE (rf.RDB$FIELD_NAME = 'MA_COLONNE') AND
(RDB$RELATION_NAME = 'MA_TABLE')
Par contre, il important de respecter la casse pour le nom de la colonne et le nom de la table sans quoi tu auras des surprises, c'est-à dire une belle valeur "null" au retour.

Ensuite dans ton code tu utilises une instruction du type "Case" pour les valeurs retournée par la requête :

Citation:
Envoyé par qi130
• BLOB - 261
• CHAR - 14
• CSTRING - 40
• D_FLOAT - 11
• DOUBLE - 27
• FLOAT - 10
• INT64 - 16
• INTEGER - 8
• QUAD - 9
• SMALLINT - 7
• DATE - 12
(dialect 3 DATE)
• TIME - 13
• TIMESTAMP - 35
(DATE in older versions)
• VARCHAR - 37
par exemple (en Delphi et ou ValeurRetournee) est la valeur retournée par la requête mais tu peux faire le traitement suivant par une procédure stockée ou mieux encore par une UDF.

Code :
1
2
3
4
5
6
7
8
 
Case ValeurRetournee Of
  14 : // traitement d'un type char
  10 : // traitement d'un nombre à virgule flottante
  37 : // traitement d'un type varchar
  else
     // autre type à traiter
end;
J'espère que cela répond à ton attente.


SillyCoder
sillycoder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 14h49   #6
Invité de passage
 
Inscription : mai 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 11
Points : 1
Points : 1
merci c'est ok
chant78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 17h06   #7
Membre habitué
 
Inscription : février 2005
Messages : 279
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 279
Points : 110
Points : 110
[QUOTE=sillycoder]Salut,

Voici la requête qui permet de récupérer le type d'un champs :

Code :
1
2
3
4
5
6
 
SELECT RDB$FIELD_SOURCE AS TYPE_CHAMP 
FROM RDB$RELATION_FIELDS rf
INNER JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
WHERE (rf.RDB$FIELD_NAME = 'MA_COLONNE') AND
(RDB$RELATION_NAME = 'MA_TABLE')
Il y a une erreur, la vrai requête est:

Code :
1
2
3
4
5
6
Select RDB$FIELD_TYPE as TYPE_CHAMP 
from RDB$RELATION_FIELDS rf
inner join RDB$FIELDS f on f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
where (rf.RDB$FIELD_NAME = 'MA_COLONNE') and
(RDB$RELATION_NAME = 'MA_TABLE')
nek_kro_kvlt 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 12h00.


 
 
 
 
Partenaires

Hébergement Web