Необходимо обновить представление Oracle, но базовая таблица не существует - PullRequest
2 голосов
/ 20 сентября 2010

Я пытаюсь внести крайне незначительные изменения в представление базы данных Oracle, но меня смущает то, что базовая таблица / представление для представления, которое я хочу изменить, похоже, не существует.

Сначала я сделал это:

выделил текст из всех просмотров, где view_name = '(имя представления)';

и получил текст представления, что, конечно, былонапример:

SELECT (поля) FROM (таблица)

Попытка выполнить этот запрос самостоятельно возвращает ошибку, говорящую о том, что эта таблица или представление не существует.Поиск по спискам имен таблиц и представлений в таблицах all_ ничего не возвращает.Создание нового представления с тем же оператором выбора источника говорит мне, что я не могу сделать это, потому что таблица или представление не существует.Теперь это производственная база данных, поэтому она должна работать, потому что я могу отлично использовать существующее представление.У меня нет большого опыта работы с базами данных Oracle, поэтому я, возможно, что-то здесь упускаю.

Ответы [ 5 ]

4 голосов
/ 20 сентября 2010

Бьюсь об заклад, вид находится в другой схеме. Возвращает ли это так же, как ваш первый запрос:

select text from all_views where view_name='(view name)' and owner = user;

Если это не возвращает строк, вам нужно найти владельца представления:

select owner from all_views where view_name = '(view_name)';

И измените свой SQL на

select (fields) from (view_owner).(table);
1 голос
/ 21 сентября 2010

Вы можете создать представление, даже если не существует базовой таблицы, с помощью параметра «FORCE» («NO FORCE» -

по умолчанию) следующим образом:

CREATE FORCE VIEW test_view AS</p> <p>SELECT c1, c2 FROM test_table; -- table, which does not exist yet.

Поскольку мы не использовали параметр FORCE, представление не было создано. Однако при попытке доступа к

view выдает ошибку, потому что таблица TEST_TABLE еще не существует.

0 голосов
/ 04 июля 2018

Вы должны использовать ключевое слово force ..

create force view my_view as elect column1 from table_test -- table is not exists here..
0 голосов
/ 26 августа 2014

Используя «FORCE», мы также можем создать представление по двойной таблице (таблица по умолчанию для оракула).

1-Пример: создать принудительное представление v1 как select a, b, c из dual;

Предупреждение: представление создано с ошибкой компиляции.

2-Пример: создать принудительное представление v2 как select * from dual;

Ответ: представление создано.

0 голосов
/ 20 сентября 2010

Ничего себе, неважно. Они даже не просили меня сделать это. Я пропустил эту часть в оригинальном письме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...