[TL;DR] La chose la plus simple à faire est de ne jamais utiliser de guillemets doubles autour des noms d'objets et de laisser Oracle gérer la sensibilité à la casse de sa manière par défaut.
Cependant, vous pouvez utiliser des guillemets doubles dans SQLFiddle :
Configuration du schéma Oracle 11g R2 :
CREATE TABLE products
("P_Id" int, "ProductName" varchar2(10), "UnitPrice" numeric, "UnitsInStock" int, "UnitsOnOrder" int)
//
INSERT ALL
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
VALUES (1, 'Jarlsberg', 10.45, 16, 15)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
VALUES (2, 'Mascarpone', 32.56, 23, NULL)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
VALUES (3, 'Gorgonzola', 15.67, 9, 20)
SELECT * FROM dual
//
Requête 1 :
SELECT "ProductName" FROM products
| ProductName |
|-------------|
| Jarlsberg |
| Mascarpone |
| Gorgonzola |
Les bases de données Oracle sont, par défaut, sensibles à la casse ; cependant, ils convertiront également, par défaut, tout en majuscules afin que la sensibilité à la casse soit abstraite de vous, l'utilisateur. Ce n'est que lorsque vous utilisez des guillemets doubles qu'Oracle utilisera la casse que vous spécifiez pour l'identifiant.
Puisque vous avez utilisé des identifiants entre guillemets dans le CREATE TABLE
déclaration, vous devrez également utiliser des identifiants entre guillemets dans le SELECT
instructions avec la casse exacte utilisée dans la création de table.
Ainsi, le nom de la colonne n'est pas ProductName
c'est "ProductName"
(avec les guillemets doubles).
Une meilleure solution consiste à ne pas utiliser de guillemets :
Configuration du schéma Oracle 11g R2 :
CREATE TABLE products(
P_Id int,
ProductName varchar2(10),
UnitPrice numeric,
UnitsInStock int,
UnitsOnOrder int
)
//
INSERT INTO products ( P_Id, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder )
SELECT 1, 'Jarlsberg', 10.45, 16, 15 FROM DUAL UNION ALL
SELECT 2, 'Mascarpone', 32.56, 23, NULL FROM DUAL UNION ALL
SELECT 3, 'Gorgonzola', 15.67, 9, 20 FROM DUAL
//
Requête 1 :
SELECT ProductName FROM products
| PRODUCTNAME |
|-------------|
| Jarlsberg |
| Mascarpone |
| Gorgonzola |