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?
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 : Sélectionner tout - Visualiser dans une fenêtre à part ''
par exemple
aussi possible dans une version pas trop ancienne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'L''apostrophe'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 q'[L'apostrophe]'
Sous Oracle ?Envoyé par laurentschneider
oui, Oracle 10gR1 et ultérieurEnvoyé par McM
http://download-uk.oracle.com/docs/c...003.htm#i42617
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?Envoyé par laurentschneider
En 10gR1 (sans modifier mon paramétrage), voici ce que j'obtiens :
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 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 clientEnvoyé par Magnus
![]()
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 syntaxesEnvoyé 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.
Partager