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

PL/SQL Oracle Discussion :

taille d'un sous-type de varchar2


Sujet :

PL/SQL Oracle

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut taille d'un sous-type de varchar2
    bonjour,
    j'ai défini deux sous-types :
    SUBTYPE t_type1 IS table.type1%TYPE;
    SUBTYPE t_type2 IS table.type2%TYPE;

    Il se trouve que que j'ai besoin de définir un type résultant de la concaténation de ces deux types, qui sont de type VARCHAR2. Comment est-ce que je peux obtenir la taille de chacun d'entre eux?

    Quelque chose qui me permettrait de définir
    type toto is varchar2(type1.size + type2.size)

    Quitte à ce que type1 et type2 soient définis en tant que VARCAHR2 eux aussi, mais à ce moment là il faut que je puisse récupérer leur longueur dans ma table....

    Ca m'irait aussi de pouvoir définir non pas un type mais simplement une variable à l'intérieur d'une procédure, de type VARCHAR2(length(var1) + length(var2)), mais là aussi problème, je ne peux utiliser que des constantes....

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    VARCHAR2(length(var1) + length(var2))
    Pourquoi vous ennuyer ? de toute façon, seule la place réellement utilisée prendra de la mémoire. Définissez donc vos variables au maxi.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    La définition de la taille n'a vraiment aucune influence sur l'espace occupé en mémoire? pourquoi alors est-ce que le compilateur nous demande de la définir, et ne prend pas systématiquement le maximum???

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Définir, permet de fixer une limite. Par exemple, vous pouvez souhaiter limiter une variable à 100 caractères par exemple.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Ok ok, c'est simplement dommage que ce soit obligatoire de préciser cette taille max du coup, dans le cas où on ne l'utilise pas.
    Je trouve ça dommage d'être obligé de donner un maximum, quand bien même fût-il bien plus grand que nécessaire, alors qu'en théorie si on augmentait la taille des champs dans la base, ce maximum devrait être augmenté lui aussi...
    Merci pour ton aide en tous cas!

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par brassouille Voir le message
    Je trouve ça dommage d'être obligé de donner un maximum, quand bien même fût-il bien plus grand que nécessaire, alors qu'en théorie si on augmentait la taille des champs dans la base, ce maximum devrait être augmenté lui aussi...
    Merci pour ton aide en tous cas!
    C'est à ça que sert le %TYPE. il reflète la taille d'une colonne de table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Declare
      LC$Val  DEPT.DNAME%TYPE ;
    la variable LC$Val reflètera toujours la taille de la colonne associée.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Oui c'est ce que j'ai fait ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBTYPE t_type1 IS table.type1%TYPE;
    Mais comme j'ai besoin de concaténer deux champs, il me faudrait une variable dont la longueur est la somme taille(type1%TYPE) + taill(type2%TYPE), et je ne sais pas comment déclarer une telle variable.

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Le seul moyen que j'entrevois, dans ce cas, c'est d'interroger la table USER_TAB_COLUMNS pour récupérer la dimension des 2 colonnes.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    ok merci

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

Discussions similaires

  1. [MySQL] Affichage en liste de type et de leurs sous-types
    Par Mitaka dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/11/2005, 14h33
  2. Réponses: 14
    Dernier message: 28/10/2005, 18h41
  3. Diff. de taille physique entre CHAR(1) et VARCHAR2(1)
    Par foster06 dans le forum Oracle
    Réponses: 6
    Dernier message: 20/10/2004, 11h20
  4. DB objet sous types heritage
    Par smex dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2004, 21h58
  5. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34

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