Bonjour,
j'ai une table dont un champt été à number(6,2).
je l'ai modifié en number(9,2) mais je me suis trompée.
Il faut la remettre à number(6,2).
Et il ne veut pas.
Quelqu'un a t'il une solution?
c'est urgent.
Bonjour,
j'ai une table dont un champt été à number(6,2).
je l'ai modifié en number(9,2) mais je me suis trompée.
Il faut la remettre à number(6,2).
Et il ne veut pas.
Quelqu'un a t'il une solution?
c'est urgent.
Pourquoi il ne veux pas ?
quelle est l'erreur une personne à déjà alimenter le champs avec un valeur supérieur à un number(6,2) ?
Si oui il faut identifier ces valeurs afin de les corriger avant toute modification
Tant que la requête ci dessous retourne des lignes tu ne pourras pas faire un retour arrrière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * from matable where champs1 > 9999.99 or champs1 < -9999.99;
Sinon, si oracle refuse de sous dimensionner un chamsp number alors
sinon un peu plus de précision serait bien venu, version , message d'erreur oracle ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 --1 créé un nouveau champ' alter table matable add champs2 number(6,2); --2 sauve les valeurs du champs1 (celui modifié en number(9.2)) update matable set champs2 = champs1, champs1 = null; --3 modifier le champs1 qui est null à présent alter table matable modify champs1 number(6,2) --4 remettre les bonnes valeurs dans le champs1 update matable set champs1 = champs2; --5 dropper le champs2 alter table matable drop column champs2;
Non je n'ai aucune valeur retournée.
Il ne veut pas faire de changement tant que la colonne n'est pas vide..
j'ai l'erreur oracle ORA-01440.
version oracle : 9i
Tu peux ajouter une colonne temporairement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 SQL> create table t(n number(9,2)); Table created. SQL> insert into t values (0); 1 row created. SQL> alter table t add (n1 number(6,2)); Table altered. SQL> update t set n1=n, n=null; 1 row updated. SQL> alter table t drop column n; Table altered. SQL> alter table t add (n number(6,2)); Table altered. SQL> update t set n=n1,n1=null; 1 row updated. SQL> alter table t drop column n1; Table altered. SQL> set lin 50 SQL> desc t Name Null? Type ----------------------- -------- ---------------- N NUMBER(6,2)
note: sygale a été plus rapide (et meilleurs) que moi poster sa réponse ;-)
si tu veux faire ça online, il faut jeter un oeil à DBMS_REDEFINITION
Dans ce cas la solution est le champs temporaire tel que décrit dans mon post précédent "Sinon, si oracle refuse de sous dimensionner un chamsp number alors "Envoyé par claralavraie
OK merci..
cela fonctionne..
prends beaucoup de temps car plus de 1 millions de données mais au moins, je peux remettre ma colonne à number 6,2..
Merci encore une fois ;-)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager