143 votes

Comment échapper à un mot réservé dans Oracle ?

En TSQL, je pourrais utiliser quelque chose comme Select [table] from tablename pour sélectionner une colonne nommée "table".

Comment faire pour les mots réservés dans oracle ?

Edit : J'ai essayé les crochets, les guillemets doubles, les guillemets simples et les guillemets inversés, mais ça ne marche pas...

À titre de précision, j'ai une rubrique que quelqu'un a nommée commentaire. Comme il s'agit d'un mot réservé, Oracle a du mal à sélectionner avec ce mot et échoue lors de l'analyse de la requête. J'ai essayé de sélectionner "commentaire" à partir du nom de l'onglet mais cela n'a pas fonctionné. Je vais vérifier le cas et revenir.

210voto

eyelidlessness Points 28034

D'après une recherche rapide, Oracle semble utiliser les guillemets doubles ( " , eg "table" ) et nécessite apparemment le cas correct -Par contre, pour toute personne intéressée, MySQL utilise par défaut les backticks (`), sauf s'il est configuré pour utiliser des guillemets doubles pour des raisons de compatibilité.

36voto

Jeffrey Kemp Points 26050

Oracle exige normalement des guillemets doubles pour délimiter le nom des identificateurs dans les instructions SQL, par ex.

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" AS "Alias"
WHERE "ThisCol" = 'That Value';

Toutefois, il permet gracieusement d'omettre les guillemets, auquel cas il convertit discrètement l'identifiant en majuscule :

SELECT MyColumn AS MyColAlias
FROM MyTable AS Alias
WHERE ThisCol = 'That Value';

est converti en interne en quelque chose comme :

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" AS "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';

4voto

Oracle utilise les guillemets doubles, mais vous devez très probablement placer le nom de l'objet en majuscules, par exemple "TABLE". Par défaut, si vous créez un objet sans double guillemets, par ex.

CREATE TABLE table AS ...

Oracle créerait l'objet comme majuscule . Cependant, le référencement n'est pas sensible à la casse, sauf si vous utilisez des guillemets !

-8voto

oualid Points 9

Vous devez renommer la colonne à un autre nom car TABLE est réservé par Oracle.

Vous pouvez voir tous les mots réservés d'Oracle dans la vue d'Oracle. V$RESERVED_WORDS .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X