Страницы

Поиск по вопросам

суббота, 21 марта 2020 г.

Неизвестный идентификатор в запросе из таблицы DUAL

#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';

Комментариев нет:

Отправить комментарий