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

SQL Firebird Discussion :

[IB] Obtenir le type d'un champ


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    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

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 921
    Points : 6 037
    Points
    6 037
    Par défaut
    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

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci,
    je vais tester
    j'ai également posé la question dans le forum Interbase

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    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

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 113
    Points
    113
    Par défaut
    Salut,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci c'est ok

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    [QUOTE=sillycoder]Salut,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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')

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

Discussions similaires

  1. modifier le type d'un champs
    Par xopos dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 16/12/2008, 15h09
  2. PB modification du type d'un champ ds BDD
    Par vanoou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/01/2005, 16h01
  3. tester le type d'un champ
    Par gskoala dans le forum Bases de données
    Réponses: 9
    Dernier message: 08/10/2004, 16h48
  4. changement de type pour un champ dans une table
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 23/02/2004, 15h26
  5. Type d'un champ
    Par topolino dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/07/2003, 09h08

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