Oracle Views. Сюрпризы.

Создаем обычную вьюшку.

create view TestView as
Select Level as N from dual connect by Level < 10

Три следующих запроса работают нормально:

Select * from TestView;
Select N from TestView;
Select n from TestView;
Select "N" from TestView;

Не понравилось нам название колонки – N, меняем вьюшку

create or replace view TestView as
Select Level as "Test_Column"
from dual connect by Level < 10

Первые три запросы вернут ошибку ORA-00904. Последний четвертый выполнится без проблем.

Select Test_Column from TestView
Select test_column from TestView
Select "test_column" from TestView
Select "Test_Column" from TestView

Поначалу я решил что всё что заключено в двойные кавычки будет case-sensitive и надо обрамлять имя колонки в двойные кавычки и писать имя букву в букву с учётом регистра. Следующий пример это опровергает. Никаких проблем нет.

create or replace view TestView as
Select Level as "N"
from dual connect by Level < 10

Select * from TestView;
Select N from TestView;
Select n from TestView;
Select "N" from TestView;

Оказалось всё гораздно проще.

Если имя колонки заключенно в двойные кавычки, то при запросах его точно также и надо писать с учётом регистра.

Если в запросе вы обрамляете название поле двойными кавычками, то его надо писать в верхнем регистре, если конечно в определении view вы не использовали двойные кавычки.

Ну где у Оракла логика?!

Tags: ,

Смотрите также: