sur des bases differentes,
mais je ne vois pas ce que vous voulez dire par "verifier le format"...
Version imprimable
sur des bases differentes,
mais je ne vois pas ce que vous voulez dire par "verifier le format"...
Verifie le parametre NLS_NUMERIC_CHARACTERS de chacune de tes bases (table NLS_DATABASE_PARAMETERS)
Bonjour,
je vous remercie de votre aide.
je n'ai toujours pas trouve la solution mais je sens que ca se precise !
En effet lorsque je rapatrie les tables sur la meme base et sue j'execute l'ordre delete, tout marche impecable.
J'ai donc comparer les valeurs NLS_NUMERIC_CHARACTERS des deux bases, sur vos conseils. Et il y a des differences :
- au niveau du langage (une en francais , l'autre en americain)
- par contre pour le format des nombres reels, une indique ., et l'autre ,.
Ca se précise...
Sur la base sur laquelle tu lances la requête, mets les NLS_NUMERIC_CHARACTERS et NLS_DATE_FORMAT que tu as sur l'autre base, en faisant :
Code:
1
2 alter session set NLS_NUMERIC_CHARACTERS='.....'; alter session set NLS_DATE_FORMAT='......';
Je ne pense pas avoir les droits de modifier aussi directement les parametres d'une base de prod... Mais je vais me renseigner.
Par contre je viens de penser a ceci (dite moi si je me trompe) :
la base de production est une v7...
la base d'archive est une v8...
les colonnes pour lesquelles ma requetes ne fonctionne pas sont toutes des varchar2. la difference entre les colonnes de type varchar2 qui ne posent pas de probleme et les autres, est le fait qu'aucunes n'a de champs null donc le test "nvl(to_char(col), '$$*$$')" ne se fait pas.
Ma conclusion est donc: la v7... d'Oracle ne sait pas faire un to_char() d'une variable varchar2, elle se dit que le to_char se fait sur un number or mon champs est de type character d'ou l'erreur: invalid number !
Vous en pensez quoi ?
J'en pense que vous avez peut-être une idée lumineuse ! :idea:
La précision est importante (comme quoi il faut toujours indiquer la version :wink: )
Il me semble en effet me rappeler qu'en V7 (mais cela fait longtemps que je n'ai pas touché à cette version), il y avait une erreur lorsqu'on faisait un to_char sur une colonne caractères. Le plus simple est que vous vérifiiez cela sur votre base V7.
Et bien je crois que l'on peut classer ce post comme resolu !
Je vous remercie de votre aide a tous :wink:
Peut être il faut indiquer dans le forum en grand, d'indiquer toujours la version d'Oracle et OS avant de poster une question.
Je pense qu'il faudrait prendre une résolution drastique mais nécessaire de s'interdire toute réponse dès lors que la version de l'outil n'est pas indiquée !
c'est indiqué dans le post-it : A LIRE AVANT DE POSTERCitation:
Envoyé par bouyao
malheureusement, personne ne lit les post-it !
C'était quoi le pb au final, il y a des issues avec le to_char d'un varchar en Oracle 7 ?
Laly.
pour moi le problème n'est pas encore resolus.
si on'a les informations de la requette suivante ca peut expliquer le problème :
Ca peut être que dans une base il utilise le point comme décimal et dans l'autre une virgule comme decimalCode:select * from nls_session_parameters where parameter='NLS_NUMERIC_CHARACTERS'
dans ce cas, l'erreur sur To_Char() serait : ORA-01481Citation:
Envoyé par bouyao
ca peut être ORA 1722
metalink :
Citation:
Problem Description
-------------------
Running the same query, in different clients, generates the oracle error
ORA-1722 in one of them.
Error: ORA 1722
Text: invalid number
------------------------------------------------------------------------
// *Cause: The attempted conversion of a character string to a number failed
// because the character string was not a valid numeric literal. Only numeric
// fields or character fields containing numeric data may be used in arithmetic
// functions or expressions. Only numeric fields may be added to or subtracted
// from dates.
// *Action: Check the character strings in the function or expression. Check
// that they contain only numbers, a sign, a decimal point, and the character
// "E" or "e" and retry the operation.
Solution Description
--------------------
SLQ> ALTER SESSION SET NLS_NUMERIC_CHARACTERS = �.,�;
Explanation
-----------
The Database was running with the NLS_NUMERIC_CHARACTERS = �.,� parameter but
the client was using �,.� .
Bien vu.
DBS a déjà donné la réponse à cette question plus haut. :wink:Citation:
Envoyé par bouyao
c'est vrai dans Oracle V7 to_char d'un char ou varchar donne l'erreur ora-00900 mais pas l'erreur ORA 1722.
Pour repondre a plainR, le requete me renvoie dans les deux cas :
,.
avant c'est :
et aprés :Citation:
par contre pour le format des nombres reels, une indique ., et l'autre ,.
je ne comprends pasCitation:
Pour repondre a plainR, le requete me renvoie dans les deux cas :
,.