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?
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
More Code : More Bugs. Less Code : Less Bugs
Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP
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
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
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
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
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 ?
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
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 ?
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager