NLS_NUMERIC_CHARACTERS réglage pour les décimales
J'ai une db installation dans une machine de test et le deuxième dans la machine de production. Quand je lance:
select to_number('100,12') from dual
Puis il donne une erreur dans la machine de test. Cependant, cette instruction fonctionne très bien dans la production de la machine.
Maintenant, quand je vérifie pour NLS_NUMERIC_CHARACTERS puis je vois ',' (virgule) dans les deux machine. Est-il autre chose que je devrais être à la recherche de la valeur décimale?
Cheers!
OriginalL'auteur Jaanna | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez voir votre session actuelle paramètres en interrogeant
nls_session_parameters
:Qui peuvent différer de la base de données par défaut, que vous pouvez voir dans
nls_database_parameters
.Dans cette session, vos erreurs de requête:
J'ai pu modifier ma session, soit directement avec le
alter session
ou en assurant mon client est configuré dans une voie qui conduit à la définition de la chaîne de besoins (il peut être héritée d'un système d'exploitation ou Java locale, par exemple):Dans SQL Developer, vous pouvez définir la valeur de votre choix de l'Outil->Préférences->Base de données->NLS.
Mais je peux aussi remplacer le paramètre de session dans le cadre de la requête, avec l'option de troisième nlsparam paramètre
to_number()
; si cela fait la seconde en option fmt paramètre nécessaire, de sorte que vous devez être en mesure de choisir un format adapté:Par défaut, le résultat est toujours affiché avec mes paramètres de session, de sorte que le séparateur décimal est toujours d'une période.
OriginalL'auteur Alex Poole
Jaanna, le session paramètres dans Oracle SQL Developer dépendent de votre ordinateur client, tandis que le NLS paramètres sur PL/SQL est à partir du serveur.
Par exemple le
NLS_NUMERIC_CHARACTERS
sur l'ordinateur client peut être",.' alors que c'est".,' sur le serveur.Ainsi, lorsque vous exécutez le script de PL/SQL et Oracle SQL Developer le séparateur décimal peut être complètement différente pour le même script, à moins que vous alter session avec votre
NLS_NUMERIC_CHARACTERS
dans le script.Une façon de tester facilement votre séance d'paramètre est à faire:
Aucune mention de PL/SQL dans la question de l'OP
Ainsi, vous pouvez vérifier si le séparateur décimal (point ou virgule) est ok dans la sortie de l'instruction select
OriginalL'auteur Jonas
Savoir SESSION séparateur décimal, vous pouvez utiliser la commande SQL suivante:
La première commande SELECT trouver NLS Paramètre défini dans
NLS_SESSION_PARAMETERS
table. Le séparateur décimal est le premier caractère de la valeur retournée.La deuxième SÉLECTIONNEZ la commande convertir IMPLICITEMENT la
0.5
nombre rationnel dans une Chaîne à l'aide (par défaut) NLS_NUMERIC_CHARACTERS définis au niveau de la session.Les deux de retour de commande même valeur.
J'ai déjà testé la même commande SQL PL/SQL script et c'est toujours la même valeur de la VIRGULE ou le POINT, qui est affiché. Séparateur de décimales affichées dans PL/SQL script est égale à ce qui est affiché dans SQL.
Pour tester ce que je dis, j'ai utilisé les commandes SQL suivantes:
La plus courte de commande pour savoir séparateur de décimales:
Que le retour
0,5
si le séparateur décimal est une VIRGULE et0.5
si le séparateur décimal est un POINT.OriginalL'auteur schlebe