2015-05-19 5 views
1

Итак, у меня есть эта небольшая проблема с Oracle 12c. Всякий раз, когда я делаю запрос какOracle 12c несоответствие column_name

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE table_name = 'EMP'; 

я получить имена столбцов в правильном порядке

empno 
ename 
... 

, но когда я запускаю его снова имена столбцов получить обратное.

deptno 
comm 
... 
ename 
empno 

Кто-нибудь знает, почему это происходит? Является ли это новой «функцией», реализованной в 12c, или это только я, потому что это неправильно? И самое главное, есть ли способ исправить это? Спасибо заранее и извините, если это глупый вопрос.

+2

Что такое правильный порядок? Добавьте ORDER BY, чтобы всегда получать тот же порядок. (В противном случае вы не можете ожидать какого-либо определенного порядка.) – jarlh

+0

, конечно, вы должны использовать 'ORDER BY' для получения детерминированного вывода. Это действительно меняется каждый раз? Обычно Oracle не меняет планы выполнения так часто. Изменение планов exec может быть вызвано: статистическими пересчетами, некоторым динамическим выборочным любопытством или базовыми показателями производительности. Если план выполнения действительно изменился с каждым исполнением, возможно, вы обнаружили ошибку в Oracle. – ibre5041

+0

Вещь - всякий раз, когда я запускаю этот запрос в базе данных 11g, результат остается прежним (первое, что я разместил, порядок столбцов - тот, который указан при первом создании таблицы). Но когда я делаю тот же запрос в базе данных 12c, первым результатом является первое, что является вторым результатом. Я не знаю, почему это происходит. Может быть, это только я. – districktt

ответ

3

Использование

order by column_id; 

и вы получите ВСЕГДА правильный порядок столбцов

+0

спасибо за ответ – districktt

Смежные вопросы