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

Administration Oracle Discussion :

ORACLE 10g : récupérer la taille d'une colonne dynamiquement


Sujet :

Administration Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut ORACLE 10g : récupérer la taille d'une colonne dynamiquement
    Bonjour,

    J'ai une interrogation. Evidemment sinon je ne serais pas ici allez-vous dire

    Disons que dans un programme pl/sql j'ai deux variables. La première me donne le nom d'une table, la seconde le nom d'une des colonnes de cette table.

    Comment puis je faire pour aller récupérer le type et la taille de cette colonne dans la table ?

    Un exemple. J'ai une table définie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table TEST
    (
      FIELD1 VARCHAR2(50),
      FIELD2 VARCHAR2(25),
      FIELD3 NUMBER
    )
    A un moment dans mon code pl/sql je voudrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NomDeTable:='Test';
    NomDeCol:='Field1';
    TypeCol:=TourDeMagiePourLeType(NomDeTable, NomDeCol);
    -- qui me renverrait une valeur qui me dit que c'est un VARCHAR2
    TailleCol:=TourDeMagiePourLaTaille(NomDeTable, NomDeCol);
    -- qui me renverrait 25
    Quelqu'un a une idée de comment écrire ces TourDeMagiePourLeType & TourDeMagiePourLaTaille ?

    merci de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    je crois que j'ai trouvé... il suffit d'utiliser la table système ALL_TAB_COLS et un EXECUTE IMMEDIATE pour en faire une execution dynamique.

    réfléchir avant, poser les questions après.

    Faut que j'm'en rappelle de celle là...

    merci

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    Pour ceux que cela intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DynamicSql:='SELECT DATA_TYPE,CHAR_LENGTH FROM ALL_TAB_COLS WHERE TABLE_NAME='''||TableName||''' AND COLUMN_NAME='''||FieldName||'''';
    EXECUTE IMMEDIATE DynamicSql INTO DataType,CharLength;

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    il est inutile d'employer du sql dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT 
      DATA_TYPE,
      CHAR_LENGTH 
    INTO
      DATA_TYPE,
      CHAR_LENGTH 
    FROM 
      USER_TAB_COLS 
    WHERE 
      TABLE_NAME=TableName AND COLUMN_NAME=FieldName;

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

Discussions similaires

  1. [XL-2003] Récupérer des valeurs dans une colonne dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/11/2013, 12h03
  2. Réponses: 10
    Dernier message: 05/10/2010, 17h12
  3. Réponses: 1
    Dernier message: 29/04/2008, 16h10
  4. [ORACLE 8]Augmentation la taille d'une colonne
    Par nabil1 dans le forum Oracle
    Réponses: 2
    Dernier message: 30/10/2006, 17h32
  5. Récupérer le type et la taille d'une colonne
    Par Progs dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 23/09/2005, 17h27

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