Итак, у меня есть эта небольшая проблема с Oracle 12c. Всякий раз, когда я делаю запрос какOracle 12c несоответствие column_name
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE table_name = 'EMP';
я получить имена столбцов в правильном порядке
empno
ename
...
, но когда я запускаю его снова имена столбцов получить обратное.
deptno
comm
...
ename
empno
Кто-нибудь знает, почему это происходит? Является ли это новой «функцией», реализованной в 12c, или это только я, потому что это неправильно? И самое главное, есть ли способ исправить это? Спасибо заранее и извините, если это глупый вопрос.
Что такое правильный порядок? Добавьте ORDER BY, чтобы всегда получать тот же порядок. (В противном случае вы не можете ожидать какого-либо определенного порядка.) – jarlh
, конечно, вы должны использовать 'ORDER BY' для получения детерминированного вывода. Это действительно меняется каждый раз? Обычно Oracle не меняет планы выполнения так часто. Изменение планов exec может быть вызвано: статистическими пересчетами, некоторым динамическим выборочным любопытством или базовыми показателями производительности. Если план выполнения действительно изменился с каждым исполнением, возможно, вы обнаружили ошибку в Oracle. – ibre5041
Вещь - всякий раз, когда я запускаю этот запрос в базе данных 11g, результат остается прежним (первое, что я разместил, порядок столбцов - тот, который указан при первом создании таблицы). Но когда я делаю тот же запрос в базе данных 12c, первым результатом является первое, что является вторым результатом. Я не знаю, почему это происходит. Может быть, это только я. – districktt