[TL; DR] Самое простое, что можно сделать, это никогда не использовать двойные кавычки вокруг имен объектов и просто позволить oracle управлять чувствительностью к регистру по умолчанию, а также если вы ссылаетесь на столбцы в базе данных, чувствительной к регистру. через dblink затем назовите эти столбцы в верхнем регистре, чтобы вам не приходилось использовать двойные кавычки в Oracle.
По умолчанию базы данных Oracle чувствительны к регистру; однако по умолчанию они также преобразуют все в верхний регистр, так что чувствительность к регистру абстрагируется от вас, пользователя.
CREATE TABLE emp ( empid NUMBER(12,0) );
Тогда:
SELECT empid FROM emp;
SELECT Empid FROM emp;
SELECT EMPID FROM emp;
SELECT eMpId FROM emp;
SELECT "EMPID" FROM emp;
Все будут выдавать одинаковый вывод и:
SELECT TABLE_NAME, COLUMN_NAME FROM USER_TAB_COLUMNS;
Выходы:
TABLE_NAME COLUMN_NAME
---------- -----------
EMP EMPID
(обратите внимание, что имя таблицы в верхнем регистре).
Если вы используете двойные кавычки, то oracle будет уважать ваше использование регистра в идентификаторах объектов:
CREATE TABLE emp ( "empid" NUMBER(12,0) );
Тогда:
SELECT TABLE_NAME, COLUMN_NAME FROM USER_TAB_COLUMNS;
Выходы:
TABLE_NAME COLUMN_NAME
---------- -----------
EMP empid
(Примечание. Oracle учитывает регистр символов в столбце empid
).
и теперь вы можете ссылаться только на столбец, используя:
SELECT "empid" FROM emp;
и эти запросы не будут выполнены:
SELECT empid FROM emp;
SELECT Empid FROM emp;
SELECT EMPID FROM emp;
SELECT eMpId FROM emp;
SELECT "EMPID" FROM emp;
Поскольку Oracle преобразует идентификатор в верхний регистр и столбец EMPID
отсутствует, только столбец empid
.
Либо используйте двойные кавычки для ссылки на столбец, либо переименуйте столбец в EMPID
, чтобы позволить вам использовать стандартное поведение Oracle, заключающееся в абстрагировании от пользователя чувствительности к регистру (но это может нарушить другие запросы, которые используют двойные кавычки) на имя столбца не в верхнем регистре).