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

Oracle Discussion :

NLS NUMERIC CHARACTERS


Sujet :

Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Par défaut NLS NUMERIC CHARACTERS
    Bonjour ,
    Voila je developpe une application web en VB.net avec la une BDD oracle,j'ai une requete d'update:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql ="UPDATE bdd.table1 SET X=" & x1 & ",Y=" & y1 & ",Z="& z1
    NB:X ,Y et Z de type decimal.
    quand j'execute la requete j'ai un erreur de
    ORA-01747: spécification utilisateur.table.colonne, table.colonne ou colonne non valide
    alors j'ai recuperer la requete envoyer par mon envirenement de developpement (VS 2003) et j'ai comme requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE bdd.table1 SET X=15,5224,Y=,Z=0,2144
    j'ai fait des recherches et j'ai trouver qu'il faut mettre point a la place de virgule(15,5224 =>15.5224):
    j'ai execute la requete :
    SELECT * from NLS_SESSION_PARAMETRES
    et j'ai dans le champ:
    NLS_NUMERIC_CHARACTERS la valeur ',.'
    alors j'ai modifier ma requete d'update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql ="UPDATE bdd.table1 SET X=to_number(" & x1 & " ,'9999999999999D9999999999', 'nls_numeric_characters=.,'),Y=to_number(" & y1 & " ,'9999999999999D9999999999', 'nls_numeric_characters=.,'),Z=to_number(" & z1 & " ,'9999999999999D9999999999', 'nls_numeric_characters=.,')"
    mais maintenant j'ai un autre erreur:
    ORA-01722: Nombre non valide
    je croit que to_number n'accepte pas une valeur NULL (Y=,),je peut utiliser la fonction nvl(string,remplace) mais moi je doit inserer un NULL rien d'autre
    alors je soulicite votre aide , et peut etre qu'il y a une facon plus simple pour faire le changement entre point et virgule sans passer par cette methode.
    Merci.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Débrouille toi en VB pour que NULL soit explicitement renseigné dans l'update :
    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
    SQL> create table t (c number);                                                                                                         
     
    Table created.                                                                                                                          
     
    SQL> insert into t values (1);                                                                                                          
     
    1 row created.                                                                                                                          
     
    SQL> update t set c = to_number(NULL ,'9999999999999D9999999999', 'nls_numeric_characters=.,');                                         
     
    1 row updated.
     
    SQL> select * from t;
     
             C
    ----------
     
     
    SQL>
    Par contre ton application souffre d'un très gros défaut : elle n'utilise pas les binds variables (variable de liaisons en français)
    Donc elle est à la fois vulnérable aux injections sql et contre performante.
    En plus avec des binds variables tu n'aurais pas ce problème de NULL.

    Je ne connais rien à VB.NET mais je te propose 2 liens qui pourront peut être t'aider:
    DEVELOPER: ODP.NET The Values That Bind By Mark A. Williams
    Building an Oracle Data Provider for .NET Application

    Si tu ne peux pas corriger le projet actuel (temps, argent...), à minima apprends à t'en servir pour tes futurs projets, car ne pas utiliser les binds variables relève du bug et de problème de sécurité encore plus que de l'optimisation des performances.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ajouterai même que vous devriez utiliser une procédure stockée et simplement lui envoyer les valeurs en tant que paramètres.

  4. #4
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Par défaut
    Merci pour vos reponses

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

Discussions similaires

  1. [10g] ORA-06502: PL/SQL: numeric or value error: character to number conversion error
    Par MadoshiNatsu dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 10/05/2013, 18h45
  2. [DATA] Comment convertir une variable Character en Numeric sous SAS?
    Par Maria_75 dans le forum SAS Base
    Réponses: 1
    Dernier message: 20/08/2012, 17h58
  3. Réponses: 13
    Dernier message: 05/12/2011, 14h09
  4. [db2][sql]Transformer un character en numeric
    Par yoyopi dans le forum DB2
    Réponses: 7
    Dernier message: 24/04/2006, 08h20
  5. [DB2] Transtypage de character à numeric
    Par yoyopi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/04/2006, 12h40

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