Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 15/06/2011, 16h46   #1
Nouveau Membre du Club
 
Homme Ahmed Med
Webmaster
Inscription : mai 2009
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Ahmed Med
Localisation : Maroc

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

Informations forums :
Inscription : mai 2009
Messages : 142
Points : 32
Points : 32
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 :
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
Citation:
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 :
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 :
Citation:
SELECT * from NLS_SESSION_PARAMETRES
et j'ai dans le champ:
Citation:
NLS_NUMERIC_CHARACTERS la valeur ',.'
alors j'ai modifier ma requete d'update :
Code :
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:
Citation:
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.
ahmedige est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 21h22   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Débrouille toi en VB pour que NULL soit explicitement renseigné dans l'update :
Code :
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.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 16/06/2011, 10h00   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 433
Points : 10 433
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
J'ajouterai même que vous devriez utiliser une procédure stockée et simplement lui envoyer les valeurs en tant que paramètres.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/06/2011, 10h52   #4
Nouveau Membre du Club
 
Homme Ahmed Med
Webmaster
Inscription : mai 2009
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Ahmed Med
Localisation : Maroc

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

Informations forums :
Inscription : mai 2009
Messages : 142
Points : 32
Points : 32
Merci pour vos reponses
ahmedige est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h18.


 
 
 
 
Partenaires

Hébergement Web