2009-12-01 2 views
2

У меня есть представление, которое возвращает четыре столбца данных, которые будут перенаправлены во внешнюю программу. Когда я просто запрашиваю представление («Выберите * из schema.view_name»), я получаю 10353 строки. Когда я запускаю фактический SQL, который создал представление (я буквально копировал и вставлял то, что хранил Oracle, минус оператор «Создать или заменить»), я получаю 238745 строк.Запрос вождения представления и фактического представления, не возвращающего одинаковых результатов

Любые идеи, почему это может произойти?

+2

Уверены ли вы? Это звучит невозможно. Потому что это так, пожалуйста, извините простые вопросы, но разве вы «уверены», что вам не хватает какого-либо предиката Where where или «отличного»? Вы уверены, что выполняете оба теста с одной и той же базой данных и с тем же сервером? - –

+0

Это материализованный вид? –

+0

Уверен, что я выполняю запросы в том же месте. Я просто запускал их в одном и том же окне разработчика PL/SQL одновременно. – Jim

ответ

5

Лучшая догадка: при выполнении автономного запроса вы не запускаете его в той же схеме, в которой был создан вид (я вывел это из того факта, что вы включили имя схемы в свой пример SELECT). Схема, в которой выполняется запрос, имеет свою собственную таблицу с тем же именем, что и одна из базовых таблиц в представлении, или одно из имен является синонимом, указывающим на еще одно представление, содержащее только подмножество строк в базовую таблицу.

+0

Вот в чем проблема. Простая проверка схемы сообщила бы мне об этом. Большое спасибо. – Jim