J'essaie d'insérer un nom contenant un apostrophe dans ma base de donnée Oracle et j'obtiens l'erreur suivante:
ORA-01756: quoted string not properly terminated
Comment insère-t-on une valeur avec un apostrophe?
Version imprimable
J'essaie d'insérer un nom contenant un apostrophe dans ma base de donnée Oracle et j'obtiens l'erreur suivante:
ORA-01756: quoted string not properly terminated
Comment insère-t-on une valeur avec un apostrophe?
Code:''
par exemple
aussi possible dans une version pas trop ancienneCode:
1
2 'L''apostrophe'
Code:
1
2 q'[L'apostrophe]'
Sous Oracle ?Citation:
Envoyé par laurentschneider
oui, Oracle 10gR1 et ultérieurCitation:
Envoyé par McM
http://download-uk.oracle.com/docs/c...003.htm#i42617Code:
1
2
3
4
5
6 SQL> select q'{C'est la vie}' from dual; Q'{C'ESTLAVIE}' --------------- C'est la vie
Vous êtes sûr que ce n'est à partir de la 10gR2 ?Citation:
Envoyé par laurentschneider
En 10gR1 (sans modifier mon paramétrage), voici ce que j'obtiens :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 10g SOC10> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod PL/SQL Release 10.1.0.3.0 - Production CORE 10.1.0.3.0 Production TNS for 32-bit Windows: Version 10.1.0.3.0 - Production NLSRTL Version 10.1.0.3.0 - Production 5 ligne(s) sélectionnée(s). 10g SOC10> select q'{C'est la vie}' from dual; ERROR: ORA-01756: une chaîne entre apostrophes ne se termine pas correctement
Oui, en 10.1 ça marche aussi
Quelle est la version du client?Code:
1
2
3
4
5
6
7
8
9
10 SQL> SELECT * FROM V$VERSION; Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Prod PL/SQL Release 10.1.0.4.0 - Production CORE 10.1.0.4.0 Production TNS for Linux: Version 10.1.0.4.0 - Production NLSRTL Version 10.1.0.4.0 - Production SQL> SELECT q'{C'est la vie}' from dual; C'est la vie
Code:
1
2
3
4
5
6
7
8 SQL*Plus: Release 9.0.1.4.0 - Production on Lu Mai 21 15:29:15 2007 (c) Copyright 2001 Oracle Corporation. All rights reserved. Connecté à : Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production With the Partitioning, OLAP and Data Mining options
il te faut un client 10g !
Effectivement, merci Laurent mais comment aurais-je pu savoir que cette erreur est liée au fait que la version de mon client est trop ancienne par rapport à la base ?
L'ajout d'un 2e apostrohe semble bien fonctionner cependant, le résultat entre ce qu'affiche mon RESPONSE.WRITE(query) et les valeurs entrées dans la table Oracle diffèrent:
Voici mon code:
---------------------------------------
Do Until rsemp.eof
firstname = replace(rsemp("firstname"), "'", "''")
lastname = replace(rsemp("lastname"), "'", "''")
query = "UPDATE tbl_employe SET nom = '"& lastname &", "& firstname &"' WHERE id_employe = '"& rsemp("id_employe") &"'"
Response.Write(query)
Execution(query)
rsemp.MoveNext
Loop
-------------------------------------
Le RESPONSE.WRITE(QUERY) m'affiche que l'entrée devrait avoir 2 apostrophes mais dans la table l'entrée n'en a qu'un seul
c'est un problème général lorsqu'on employe une syntaxe (style WITH, MERGE, XQUERY, ...) qui n'est pas connue par le client 8-)Citation:
Envoyé par Magnus
Citation:
Envoyé par hottnikks_79
tu t'éviterais bien du tracas et tu éviterais de gaspiller ta shared pool et tu gagnerais en performance si tu employais des Bind variables.
Effectivement, j'ai déjà "ennuyé" des experts comme toi avec (presque) toutes ces syntaxes :mouarf:Citation:
Envoyé par laurentschneider
La cause était à chaque fois la même : la version du client est trop ancienne.
Si j'utilisais un client en version 10 pour accéder des bases en 7i, 8i, 9i, 10gR1, 10gR2 est-ce que ça résoudrait TOUS ces problèmes de compatibilités ?
non, tu ne peux pas employer un client 10g pour te connecter en 7, la connection est refusée par un ORA-03134: Connections to this server version are no longer supported.