#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';
Комментариев нет:
Отправить комментарий