Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2008, 16h33   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2004
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 78
Points : 13
Points : 13
Par défaut (ORACLE 9i) Erreur ORA-01438

Bonjour ,

j'ai 2 tables oracle.
J'utilise l'une pour alimenter l'autre avec un insert :

insert into sas.stg_table1
select person_id, '0.2', ezw2_10_kc, 0
from sas.zw_table2
where ezw2_10_kc ne .;

Rien de plus simple!
Et poutant j'ai le message suivant :
"error: ORA-01438: value larger than specified precision allows for this column"

La colonne ezw2_10_kc de la table sas.stg_table1 contient des valeurs comprises entre -262435.09 et 602777.75
Cette colonne est définie comme Number, length 8.
Dans la table sas.zw_table2, la colonne dans laquelle je souhaite insérer les valeurs de ezw2_10_kc est définie comme Number, length 8 and format 10.3

Or un format 10.3 = 10 chiffres dont 3 aprés la virgule...donc où est le pb?
ALLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 16h50   #2
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
As tu essayé en précisant les colonnes dans le insert ?

Peut être que l'ordre des colonnes des deux tables n'est pas le même...

un insert sans spécifications de colonne est toujours une source potentielle de bug (si la table change, ...)
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h08   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2004
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 78
Points : 13
Points : 13
j'ai essayé : j'ai toujours le même problème.

Est ce que cela peut être lié au fait que la colonne a une longeur de 8 et donc au lieu de prendre le format 10,3 elle prend le format 8,3
ALLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h13   #4
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
Peux tu poster les DDL des deux tables, stp ?
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h26   #5
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par ALLB Voir le message
insert into sas.stg_table1
select person_id, '0.2', ezw2_10_kc, 0
from sas.zw_table2
where ezw2_10_kc ne .;
Soit dit entre nous, ce n'est pas vraiment optimal de mettre un nombre entre quote, ça oblige la bd à faire de la conversion entre caractère et numérique...
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h31   #6
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
effectivement, j'avais loupé les quotes...
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 12h35   #7
Candidat au titre de Membre du Club
 
Inscription : juillet 2004
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 78
Points : 13
Points : 13
exact....merci pour la remarque sur le nombre entre cote : j'ai corrigé.

Aprés vérification, la colonne ezw2_10_kc de la table sas.stg_table1 a été créée en tant que NUMBER(8,3); ce qui siginifie bien 8 chiffres dont 3 aprés la virgule ??
donc ce qui explique pourquoi 602777.75 ne passe pas...
ALLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 12h44   #8
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
Number(precision, scale) => précision est le nombre total de digits !

Donc number(8, 3) te permet de stocker xxxxx.yyy pas plus !
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 14h20   #9
Candidat au titre de Membre du Club
 
Inscription : juillet 2004
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 78
Points : 13
Points : 13
ok.
Merci pour l'éclaircissement.
Dernière question : il me semble qu'il y a des normes de "développement" et qu'on définit usuellement un champ nombre avec NUMBER(10,2) : est ce exact?
ALLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 14h26   #10
Membre éclairé
 
Inscription : août 2005
Messages : 316
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : août 2005
Messages : 316
Points : 342
Points : 342
Hormis un perimetre invariable (poids,pourcentage,etc..)
j'ai tendance a definier les nombre en number sans précision, car notre appli a un nombre de decimale parametrable pour les qte et les prix
c.langlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 15h38   #11
Rédacteur
 
Inscription : décembre 2002
Messages : 2 401
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 401
Points : 3 307
Points : 3 307
Citation:
Envoyé par ALLB Voir le message
ok.
Merci pour l'éclaircissement.
Dernière question : il me semble qu'il y a des normes de "développement" et qu'on définit usuellement un champ nombre avec NUMBER(10,2) : est ce exact?
On définit les attributs numériques en fonction des valeurs que la colonne doit stocker, tout simplement.

Si vous voulez être très général, vous pouvez utiliser NUMBER tout court.
Dans ce cas, il s'agit de nombres à virgule flottante (nombre de décimales non fixé à l'avance), et vous pourrez y stocker tout ce que vous voulez.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h05.


 
 
 
 
Partenaires

Hébergement Web