#sql #oracle
select x from dual
этот запрос выдает ошибку:
ORA-00904: "X": invalid identifier
Хорошо, понятно, идентификатор X у меня нигде не объявлен.
Но почему этот запрос выполняется нормально:
select n from dual
Что это за неизвестный но валидный идентификатор? Откуда он берется?
Также работает и запрос:
select q, y, s, d, n, m from dual
Воспроизводится в SQL*Plus:
PS Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Ответы
Ответ 1
DUAL это физическая таблица содержащая только одну колонку dummy и только одну запись со значением 'X'. Ни каких других колонок в ней не существует: SQL> select * from dual; DUMMY ----- X SQL> select n from dual; select n from dual * ERROR at line 1: ORA-00904: "N": invalid identifier Но в качестве столбца может быть указано любое действительное для листа запроса выражение. Например, для вызова функции без параметров скобоки не обязательны, и такое выражение ничем не отличается от колонки таблицы. Проверить наличие таковых по имени можно запросом: select owner, object_name, object_type from all_objects where object_name = 'N';
Комментариев нет:
Отправить комментарий