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

Oracle Discussion :

changer le type d'un attribut dans une base oracle 8i


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 26
    Points
    26
    Par défaut changer le type d'un attribut dans une base oracle 8i
    Bonjour, je souhaite changer le type d'un attribut.

    Passer un LONG en CLOB et passer un varchar2 en integer sans toucher aux données.

    Je pense qu'il doit y avoir un rapport avec alter table mais un alter table n'est pas plutot pr modifier la donnée en elle-même??

    Help please

    merci d'avance

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    c'est bien ALTER TABLE qui faut utiliser qui va changer le type de la colonne. Par contre, pour modifier le type d'une colonne VARCHAR2 en INTEGER il faut que la colonne soit toujours NULL sinon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SQL> alter table test modify(e integer);
    alter table test modify(e integer)
                            *
    ERROR at line 1:
    ORA-01439: column to be modified must be empty to change datatype
    Par contre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> update test set e=null;
     
    5 rows updated.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> alter table test modify(e integer);
     
    Table altered
    Pour VARCHAR2 -> INTEGER, on peut donc contourner cette limitation
    - en créant une table qui sauvegarde la colonne avec CREATE TABLE backup AS SELECT <clé source>, colonne FROM source
    - UPDATE source SET colonne = NULL
    - ALTER TABLE source MODIFY (colonne INTEGER);
    - et mettre à jour source.colonne à partir de backup.colonne avec le code PL/SQL adéquat.

    Pour LONG -> CLOB: je ne sais pas.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    ok super merci bien

    si qq1 a une idée pour passer de long à CLOB, je suis preneur

    Cdlt

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    LONG -> LOB : un modify fait l'affaire en 9i.

    En 8i, il faut passer par la fonction TO_LOB dans un CREATE AS SELECT.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2012, 18h16
  2. Réponses: 0
    Dernier message: 22/11/2011, 20h36
  3. [XL-2007] Récupération de données de type CLOB dans une base Oracle
    Par SlySylvain dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2010, 17h33
  4. Changer la position d'un attribut dans une table?
    Par gui38 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2007, 21h27
  5. Comment connaitre le type d'un attribut dans une table?
    Par Abdou_9002 dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/03/2006, 10h07

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