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 Oracle Discussion :

Passer tous les NUMBER(14) en NUMBER(18)


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Passer tous les NUMBER(14) en NUMBER(18)
    Bonjour tout le monde

    Une petite question, j ai 150 tables dans laquelle je possède des colonnes en number (14)
    ma question est la suivante je voudrai modifier via TOAD tous les NUMBER (14) en Number (18)

    Existe t il une fonctionnalité pour le faire ou je dois écrire un etat requete par table en listant pour chaque Alter table.

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,

    S'agit-il de modifier toutes les tables d'un user ? si oui, je pense que la requête suivante devrait vous donner un script correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT 'alter table ' || TABLE_NAME || ' modify ' || COLUMN_NAME || ' number(18);' FROM ALL_TAB_COLS WHERE OWNER = 'xxx' AND DATA_TYPE = 'NUMBER' AND DATA_LENGTH = 14;
    Je penche, donc je suis

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup mais j ai une erreur oracle

    je dois certainnement modifier quelques informations dans votre requête ?

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    je n'ai certainnement pas compris le principe de la requete que vous venez de me fournir, j ai oublié de vous dire que je suis débutant dans ORACLE et TOAD, je sais comment écrire la requete mais quand je la lance elle ne fonctionne pas.

    certaines variables de la requête doivent être modifié ?

    merci d'avance

  5. #5
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    La requête que je vous ai fourni n'est effectivement qu'une base. 'xxx' doit par exemple etre remplacé par le nom du propriétaire des tables. Il y a certainement d'autres choses à modifier selon vos besoins.
    Ceci dit, sous 9i, la requête telle qu'elle est écrite ne ramène pas d'erreur.

    - Quelle est votre version d'oracle ?
    - Quelle est le message d'erreur ?
    - Comment reconnaissez-vous les tables à modifier ? par leur nom, leur propriétaire, autre chose ?
    Je penche, donc je suis

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    la version d oracle est bien une 9i

    le message d erreur il y en a pas en fait mais ca fait rien du tout quand je vais voir mes tables
    pour ce qui concerne les tables je veux toutes les modifier toutes les colonnes de ma base ayant NUMBER(14) en (NUMBER 18)

    attention j'ai des colonne à NUMBER(14,2) est je ne veux pas les modifier

    Mais j ai vraiment fait un copier coller...

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je pense que le problème vient de ALL_TAB_COLS

    mais je me trompe peut etre

  8. #8
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Attention, cette requête ne modifie pas les tables, elle vous ramène simplement les ordres sql à lancer pour effectuer les modifications.
    Il y a un peu de travail derrière : il vous faut copier le résultat de cette requête dans un script (via un spool ou un copier/coller), contrôler que le script convient bien à ce que vous voulez faire, puis le lancer pour effectuer les modifications de structure.

    Celle-ci vous ramène toutes les colonnes de format number(14) de tous les users :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 'alter table ' || TABLE_NAME || ' modify ' || COLUMN_NAME || ' number(18);' FROM ALL_TAB_COLS WHERE DATA_TYPE = 'NUMBER' AND DATA_LENGTH = 14 and DATA_PRECISION is null;
    Je penche, donc je suis

  9. #9
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    Il faut que tu remplace xxx par le resultat de et ca devrait marcher.. ou alors tu n'as pas les droits
    Desole pour l'orthographe, mais il n'y a pas d'accent sur les claviers anglais..sniff...

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    MErci a touts pour vos réponse

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

Discussions similaires

  1. [AC-2003] REQUETE : passer tous les champs numérique d'une colonne sur 6 chiffres
    Par gandalf20000000 dans le forum Modélisation
    Réponses: 2
    Dernier message: 09/11/2009, 15h26
  2. Réponses: 2
    Dernier message: 25/08/2008, 14h11
  3. [Graphe] Obtenir la meilleur combinaison d'arrete afin de passer par tous les sommets
    Par Djobird dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 15/04/2008, 21h56
  4. Réponses: 14
    Dernier message: 25/11/2007, 18h32

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